summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2020-04-28 03:23:17 +0200
committerDarrick J. Wong <darrick.wong@oracle.com>2020-05-04 18:03:15 +0200
commitf15ab3f60ef3f25c6139262939388dc5617e2e6f (patch)
tree5d2a9ecb2b4db7bf8f0b968637741acc02680668
parentxfs: factor out a xlog_buf_readahead helper (diff)
downloadlinux-f15ab3f60ef3f25c6139262939388dc5617e2e6f.tar.xz
linux-f15ab3f60ef3f25c6139262939388dc5617e2e6f.zip
xfs: simplify xlog_recover_inode_ra_pass2
Don't bother to allocate memory and convert the log item when we only need the block number and the length. Just extract them directly and call xlog_buf_readahead separately in each branch. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
-rw-r--r--fs/xfs/xfs_log_recover.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 3a865f9aef90..08c62f5e1ba4 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -3890,22 +3890,17 @@ xlog_recover_inode_ra_pass2(
struct xlog *log,
struct xlog_recover_item *item)
{
- struct xfs_inode_log_format ilf_buf;
- struct xfs_inode_log_format *ilfp;
- int error;
-
if (item->ri_buf[0].i_len == sizeof(struct xfs_inode_log_format)) {
- ilfp = item->ri_buf[0].i_addr;
+ struct xfs_inode_log_format *ilfp = item->ri_buf[0].i_addr;
+
+ xlog_buf_readahead(log, ilfp->ilf_blkno, ilfp->ilf_len,
+ &xfs_inode_buf_ra_ops);
} else {
- ilfp = &ilf_buf;
- memset(ilfp, 0, sizeof(*ilfp));
- error = xfs_inode_item_format_convert(&item->ri_buf[0], ilfp);
- if (error)
- return;
- }
+ struct xfs_inode_log_format_32 *ilfp = item->ri_buf[0].i_addr;
- xlog_buf_readahead(log, ilfp->ilf_blkno, ilfp->ilf_len,
- &xfs_inode_buf_ra_ops);
+ xlog_buf_readahead(log, ilfp->ilf_blkno, ilfp->ilf_len,
+ &xfs_inode_buf_ra_ops);
+ }
}
STATIC void