aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2018-03-08 20:35:22 -0600
committerEric Sandeen <sandeen@redhat.com>2018-03-08 20:35:22 -0600
commitfc9f709f5beeb2b89136662013fc0bb65828ca8f (patch)
treef6c78175ac9e32ea2a0d68d8723af0142d63b023
parentd97638251b67861786b3dbfeab6555c5ea3660b0 (diff)
downloadxfsprogs-dev-fc9f709f5beeb2b89136662013fc0bb65828ca8f.tar.gz
libxfs: Replace XFS_BUF_SET_PTR with xfs_buf_associate_memory
We test the return value of the macro, but it returns returns a side-effect which looks like failure. Write a userspace-libxfs-specific version of xfs_buf_associate_memory to make this code a tad more like the kernel, with a proper return value to boot. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r--libxfs/libxfs_io.h12
-rw-r--r--libxlog/xfs_log_recover.c4
2 files changed, 10 insertions, 6 deletions
diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h
index 6308a742bc..78b67802b1 100644
--- a/libxfs/libxfs_io.h
+++ b/libxfs/libxfs_io.h
@@ -103,10 +103,6 @@ enum xfs_buf_flags_t { /* b_flags bits */
#define XFS_BUF_SIZE(bp) ((bp)->b_bcount)
#define XFS_BUF_COUNT(bp) ((bp)->b_bcount)
#define XFS_BUF_TARGET(bp) ((bp)->b_dev)
-#define XFS_BUF_SET_PTR(bp,p,cnt) ({ \
- (bp)->b_addr = (char *)(p); \
- XFS_BUF_SET_COUNT(bp,cnt); \
-})
#define XFS_BUF_SET_ADDR(bp,blk) ((bp)->b_bn = (blk))
#define XFS_BUF_SET_COUNT(bp,cnt) ((bp)->b_bcount = (cnt))
@@ -230,4 +226,12 @@ xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
cksum_offset);
}
+static inline int
+xfs_buf_associate_memory(struct xfs_buf *bp, void *mem, size_t len)
+{
+ bp->b_addr = mem;
+ bp->b_bcount = len;
+ return 0;
+}
+
#endif /* __LIBXFS_IO_H__ */
diff --git a/libxlog/xfs_log_recover.c b/libxlog/xfs_log_recover.c
index 6bd000c071..58d91823fb 100644
--- a/libxlog/xfs_log_recover.c
+++ b/libxlog/xfs_log_recover.c
@@ -171,14 +171,14 @@ xlog_bread_offset(
int orig_len = bp->b_bcount;
int error, error2;
- error = XFS_BUF_SET_PTR(bp, offset, BBTOB(nbblks));
+ error = xfs_buf_associate_memory(bp, offset, BBTOB(nbblks));
if (error)
return error;
error = xlog_bread_noalign(log, blk_no, nbblks, bp);
/* must reset buffer pointer even on error */
- error2 = XFS_BUF_SET_PTR(bp, orig_offset, orig_len);
+ error2 = xfs_buf_associate_memory(bp, orig_offset, orig_len);
if (error)
return error;
return error2;