[PATCH 08/18] libxfs: make libxfs_readbuf_verify return an error code

Darrick J. Wong
2020-02-20T01:43:41Z

From: Darrick J. Wong <darrick.wong@oracle.com>

Return the bp->b_error from libxfs_readbuf_verify instead of making
callers check it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
libxfs/libxfs_io.h | 3 +--
libxfs/rdwr.c | 10 +++++++---
repair/prefetch.c | 5 +++--
3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h
index f00ff8d3..b01f2896 100644
--- a/libxfs/libxfs_io.h
+++ b/libxfs/libxfs_io.h
@@ -208,8 +208,7 @@ libxfs_buf_read(

#endif /* XFS_BUF_TRACING */

-extern void libxfs_readbuf_verify(struct xfs_buf *bp,
- const struct xfs_buf_ops *ops);
+int libxfs_readbuf_verify(struct xfs_buf *bp, const struct xfs_buf_ops *ops);
struct xfs_buf *libxfs_getsb(struct xfs_mount *);
extern void libxfs_bcache_purge(void);
extern void libxfs_bcache_free(void);
diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c
index 2a4ef15a..24c5eaf6 100644
--- a/libxfs/rdwr.c
+++ b/libxfs/rdwr.c
@@ -943,14 +943,18 @@ libxfs_readbufr(struct xfs_buftarg *btp, xfs_daddr_t blkno, xfs_buf_t *bp,
return error;
}

-void
-libxfs_readbuf_verify(struct xfs_buf *bp, const struct xfs_buf_ops *ops)
+int
+libxfs_readbuf_verify(
+ struct xfs_buf *bp,
+ const struct xfs_buf_ops *ops)
{
if (!ops)
- return;
+ return bp->b_error;
+
bp->b_ops = ops;
bp->b_ops->verify_read(bp);
bp->b_flags &= ~LIBXFS_B_UNCHECKED;
+ return bp->b_error;
}

static struct xfs_buf *
diff --git a/repair/prefetch.c b/repair/prefetch.c
index 12272932..a3858f9a 100644
--- a/repair/prefetch.c
+++ b/repair/prefetch.c
@@ -400,9 +400,10 @@ pf_read_inode_dirs(
int icnt = 0;
int hasdir = 0;
int isadir;
+ int error;

- libxfs_readbuf_verify(bp, &xfs_inode_buf_ops);
- if (bp->b_error)
+ error = -libxfs_readbuf_verify(bp, &xfs_inode_buf_ops);
+ if (error)
return;

for (icnt = 0; icnt < (bp->b_bcount >> mp->m_sb.sb_inodelog); icnt++) {