xfs: kill xfs_buf_geterror()
PATCH 1/1 xfs: kill xfs_buf_geterror()
From: Dave Chinner <[email protected]>
Most of the callers are just calling ASSERT(!xfs_buf_geterror()) which means they are checking for bp->b_error == 0. If bp is null in this case, we will assert fail, and hence it's no different in result to oopsing because of a null bp. In some cases, errors have already been checked for or the function returning the buffer can't return a buffer with an error, so it's just a redundant assert. Either way, the assert can either be removed.
The other two non-assert callers can just test for a buffer and error properly.
--- fs/xfs/xfs_alloc.c | 1 - fs/xfs/xfs_btree.c | 12 ++---------- fs/xfs/xfs_buf.h | 5 ----- fs/xfs/xfs_buf_item.c | 2 +- fs/xfs/xfs_dquot.c | 6 +++--- fs/xfs/xfs_ialloc.c | 1 - fs/xfs/xfs_log.c | 2 +- fs/xfs/xfs_rtbitmap.c | 1 - 8 files changed, 7 insertions(+), 23 deletions(-)
fs/xfs/xfs_alloc.c +0 -1
@@ -541,7 +541,6 @@ xfs_alloc_read_agfl( XFS_FSS_TO_BB(mp, 1), 0, &bp, &xfs_agfl_buf_ops);if (error)return error; -ASSERT (!xfs_buf_geterror (bp));xfs_buf_set_ref (bp,XFS_AGFL_REF ); *bpp = bp;return 0 ;
fs/xfs/xfs_btree.c +2 -10
@@ -553,14 +553,11 @@ xfs_btree_get_bufl( xfs_fsblock_t fsbno, /* file system block number */ uint lock) /* lock flags for get_buf */ { -xfs_buf_t *bp;/* buffer pointer (return value) */ xfs_daddr_t d;/* real disk block address */ ASSERT (fsbno !=NULLFSBLOCK ); d =XFS_FSB_TO_DADDR (mp, fsbno); - bp =xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); -ASSERT (!xfs_buf_geterror (bp)); -return bp; +return xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); }/*
@@ -575,15 +572,12 @@ xfs_btree_get_bufs( xfs_agblock_t agbno, /* allocation group block number */ uint lock) /* lock flags for get_buf */ { -xfs_buf_t *bp;/* buffer pointer (return value) */ xfs_daddr_t d;/* real disk block address */ ASSERT (agno !=NULLAGNUMBER );ASSERT (agbno !=NULLAGBLOCK ); d =XFS_AGB_TO_DADDR (mp, agno, agbno); - bp =xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); -ASSERT (!xfs_buf_geterror (bp)); -return bp; +return xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); }/*
@@ -723,7 +717,6 @@ xfs_btree_read_bufl( mp->m_bsize, lock, &bp, ops);if (error)return error; -ASSERT (!xfs_buf_geterror (bp));if (bp)xfs_buf_set_ref (bp, refval); *bpp = bp;
@@ -1179,7 +1172,6 @@ xfs_btree_read_buf_block(if (error)return error; -ASSERT (!xfs_buf_geterror (*bpp));xfs_btree_set_refs (cur, *bpp); *block =XFS_BUF_TO_BLOCK (*bpp);return 0 ;
fs/xfs/xfs_buf.h +0 -5
@@ -298,11 +298,6 @@ extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, void *,extern int xfs_bioerror_relse (struct xfs_buf *); -static inline int xfs_buf_geterror (xfs_buf_t *bp) -{ -return bp ? bp->b_error :ENOMEM ; -} -/* Buffer Utility Routines */ extern xfs_caddr_t xfs_buf_offset (xfs_buf_t *,size_t );
fs/xfs/xfs_buf_item.c +1 -1
@@ -1052,7 +1052,7 @@ xfs_buf_iodone_callbacks(static ulong lasttime;static xfs_buftarg_t *lasttarg; -if (likely (!xfs_buf_geterror (bp))) +if (likely (!bp->b_error)) goto do_callbacks;/*
fs/xfs/xfs_dquot.c +3 -3
@@ -353,10 +353,10 @@ xfs_qm_dqalloc( dqp->q_blkno, mp->m_quotainfo->qi_dqchunklen, 0); - - error =xfs_buf_geterror (bp); -if (error) +if (!bp) { + error =ENOMEM ; goto error1; + } bp->b_ops = &xfs_dquot_buf_ops;/*
fs/xfs/xfs_ialloc.c +0 -1
@@ -2129,7 +2129,6 @@ xfs_read_agi(if (error)return error; -ASSERT (!xfs_buf_geterror (*bpp));xfs_buf_set_ref (*bpp,XFS_AGI_REF );return 0 ; }
fs/xfs/xfs_log.c +1 -1
@@ -1165,7 +1165,7 @@ xlog_iodone(xfs_buf_t *bp)/* * Race to shutdown the filesystem if we see an error. */ -if (XFS_TEST_ERROR ((xfs_buf_geterror (bp)), l->l_mp, +if (XFS_TEST_ERROR (bp->b_error, l->l_mp,XFS_ERRTAG_IODONE_IOERR ,XFS_RANDOM_IODONE_IOERR )) {xfs_buf_ioerror_alert (bp, __func__);xfs_buf_stale (bp);
fs/xfs/xfs_rtbitmap.c +0 -1
@@ -74,7 +74,6 @@ xfs_rtbuf_get( mp->m_bsize, 0, &bp, NULL);if (error)return error; -ASSERT (!xfs_buf_geterror (bp)); *bpp = bp;return 0 ; }
Signature · 6 lines
1.9.0 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 10 lines · Dave Chinner
From: Dave Chinner <[email protected]>
Most of the callers are just calling ASSERT(!xfs_buf_geterror()) which means they are checking for
bp->b_error== 0. If bp is null in this case, we will assert fail, and hence it's no different in result to oopsing because of a null bp. In some cases, errors have already been checked for or the function returning the buffer can't return a buffer with an error, so it's just a redundant assert. Either way, the assert can either be removed.
Quoted 5 lines
The other two non-assert callers can just test for a buffer and error properly.
Signed-off-by Dave Chinner <[email protected]>---
Looks good to me.
Quoted 166 lines
fs/xfs/xfs_alloc.c | 1 - fs/xfs/xfs_btree.c | 12 ++---------- fs/xfs/xfs_buf.h | 5 ----- fs/xfs/xfs_buf_item.c | 2 +- fs/xfs/xfs_dquot.c | 6 +++--- fs/xfs/xfs_ialloc.c | 1 - fs/xfs/xfs_log.c | 2 +- fs/xfs/xfs_rtbitmap.c | 1 - 8 files changed, 7 insertions(+), 23 deletions(-)fs/xfs/xfs_alloc.c +0
-1@@ -541,7 +541,6 @@ xfs_alloc_read_agfl( XFS_FSS_TO_BB(mp, 1), 0, &bp, &xfs_agfl_buf_ops);if (error)return error; -ASSERT (!xfs_buf_geterror (bp));xfs_buf_set_ref (bp,XFS_AGFL_REF ); *bpp = bp;return 0 ;fs/xfs/xfs_btree.c +2
-10@@ -553,14 +553,11 @@ xfs_btree_get_bufl( xfs_fsblock_t fsbno, /* file system block number */ uint lock) /* lock flags for get_buf */ { -xfs_buf_t *bp;/* buffer pointer (return value) */ xfs_daddr_t d;/* real disk block address */ ASSERT (fsbno !=NULLFSBLOCK ); d =XFS_FSB_TO_DADDR (mp, fsbno); - bp =xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); -ASSERT (!xfs_buf_geterror (bp)); -return bp; +return xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); }/* @@ -575,15 +572,12 @@ xfs_btree_get_bufs( xfs_agblock_t agbno, /* allocation group block number */ uint lock) /* lock flags for get_buf */ { -xfs_buf_t *bp;/* buffer pointer (return value) */ xfs_daddr_t d;/* real disk block address */ ASSERT (agno !=NULLAGNUMBER );ASSERT (agbno !=NULLAGBLOCK ); d =XFS_AGB_TO_DADDR (mp, agno, agbno); - bp =xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); -ASSERT (!xfs_buf_geterror (bp)); -return bp; +return xfs_trans_get_buf (tp, mp->m_ddev_targp, d, mp->m_bsize, lock); }/* @@ -723,7 +717,6 @@ xfs_btree_read_bufl( mp->m_bsize, lock, &bp, ops);if (error)return error; -ASSERT (!xfs_buf_geterror (bp));if (bp)xfs_buf_set_ref (bp, refval); *bpp = bp;@@ -1179,7 +1172,6 @@ xfs_btree_read_buf_block(if (error)return error; -ASSERT (!xfs_buf_geterror (*bpp));xfs_btree_set_refs (cur, *bpp); *block =XFS_BUF_TO_BLOCK (*bpp);return 0 ;fs/xfs/xfs_buf.h +0
-5@@ -298,11 +298,6 @@ extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, void *,extern int xfs_bioerror_relse (struct xfs_buf *); -static inline int xfs_buf_geterror (xfs_buf_t *bp) -{ -return bp ? bp->b_error :ENOMEM ; -} -/* Buffer Utility Routines */ extern xfs_caddr_t xfs_buf_offset (xfs_buf_t *,size_t );fs/xfs/xfs_buf_item.c +1
-1@@ -1052,7 +1052,7 @@ xfs_buf_iodone_callbacks(static ulong lasttime;static xfs_buftarg_t *lasttarg; -if (likely (!xfs_buf_geterror (bp))) +if (likely (!bp->b_error)) goto do_callbacks;/* fs/xfs/xfs_dquot.c +3
-3@@ -353,10 +353,10 @@ xfs_qm_dqalloc( dqp->q_blkno, mp->m_quotainfo->qi_dqchunklen, 0); - - error =xfs_buf_geterror (bp); -if (error) +if (!bp) { + error =ENOMEM ; goto error1; + } bp->b_ops = &xfs_dquot_buf_ops;/* fs/xfs/xfs_ialloc.c +0
-1@@ -2129,7 +2129,6 @@ xfs_read_agi(if (error)return error; -ASSERT (!xfs_buf_geterror (*bpp));xfs_buf_set_ref (*bpp,XFS_AGI_REF );return 0 ; }fs/xfs/xfs_log.c +1
-1@@ -1165,7 +1165,7 @@ xlog_iodone(xfs_buf_t *bp)/* * Race to shutdown the filesystem if we see an error. */ -if (XFS_TEST_ERROR ((xfs_buf_geterror (bp)), l->l_mp, +if (XFS_TEST_ERROR (bp->b_error, l->l_mp,XFS_ERRTAG_IODONE_IOERR ,XFS_RANDOM_IODONE_IOERR )) {xfs_buf_ioerror_alert (bp, __func__);xfs_buf_stale (bp);fs/xfs/xfs_rtbitmap.c +0
-1@@ -74,7 +74,6 @@ xfs_rtbuf_get( mp->m_bsize, 0, &bp, NULL);if (error)return error; -ASSERT (!xfs_buf_geterror (bp)); *bpp = bp;return 0 ; }Signature · 6 lines
1.9.0 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 10 lines · Dave Chinner
From: Dave Chinner <[email protected]>
Most of the callers are just calling ASSERT(!xfs_buf_geterror()) which means they are checking for
bp->b_error== 0. If bp is null in this case, we will assert fail, and hence it's no different in result to oopsing because of a null bp. In some cases, errors have already been checked for or the function returning the buffer can't return a buffer with an error, so it's just a redundant assert. Either way, the assert can either be removed.
Quoted 2 lines
The other two non-assert callers can just test for a buffer and error properly.
Looks good,
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs