xfs: make xfs_buf_read_map return an error code
Convert xfs_buf_read_map() to return numeric error codes like most everywhere else in xfs. This involves moving the open-coded logic that reports metadata IO read / corruption errors and stales the buffer into xfs_buf_read_map so that the logic is all in one place. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
@@ -2956,14 +2956,17 @@ xfs_read_agf(
|
||||
trace_xfs_read_agf(mp, agno);
|
||||
|
||||
ASSERT(agno != NULLAGNUMBER);
|
||||
error = xfs_trans_read_buf(
|
||||
mp, tp, mp->m_ddev_targp,
|
||||
error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp,
|
||||
XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)),
|
||||
XFS_FSS_TO_BB(mp, 1), flags, bpp, &xfs_agf_buf_ops);
|
||||
/*
|
||||
* Callers of xfs_read_agf() currently interpret a NULL bpp as EAGAIN
|
||||
* and need to be converted to check for EAGAIN specifically.
|
||||
*/
|
||||
if (error == -EAGAIN)
|
||||
return 0;
|
||||
if (error)
|
||||
return error;
|
||||
if (!*bpp)
|
||||
return 0;
|
||||
|
||||
ASSERT(!(*bpp)->b_error);
|
||||
xfs_buf_set_ref(*bpp, XFS_AGF_REF);
|
||||
|
@@ -422,16 +422,6 @@ xfs_attr_rmtval_get(
|
||||
&xfs_attr3_rmt_buf_ops);
|
||||
if (!bp)
|
||||
return -ENOMEM;
|
||||
error = bp->b_error;
|
||||
if (error) {
|
||||
xfs_buf_ioerror_alert(bp, __func__);
|
||||
xfs_buf_relse(bp);
|
||||
|
||||
/* bad CRC means corrupted metadata */
|
||||
if (error == -EFSBADCRC)
|
||||
error = -EFSCORRUPTED;
|
||||
return error;
|
||||
}
|
||||
|
||||
error = xfs_attr_rmtval_copyout(mp, bp, args->dp->i_ino,
|
||||
&offset, &valuelen,
|
||||
|
Reference in New Issue
Block a user