Re: [PATCH 03/19] xfs: uncached buffer reads need to return an error

Christoph Hellwig
2012-10-11T21:36:31Z

> index 917e121..dee14eb 100644
> --- a/fs/xfs/xfs_fsops.c
> +++ b/fs/xfs/xfs_fsops.c
> @@ -149,6 +149,11 @@ xfs_growfs_data_private(
> XFS_FSS_TO_BB(mp, 1), 0, NULL);
> if (!bp)
> return EIO;
> + if (bp->b_error) {
> + int error = bp->b_error;
> + xfs_buf_relse(bp);
> + return error;
> + }
> xfs_buf_relse(bp);

> + if (bp->b_error) {
> + error = bp->b_error;
> + if (loud)
> + xfs_warn(mp, "SB validate failed");
> + goto release_buf;
> + }

> + if (bp->b_error) {
> + error = bp->b_error;
> + xfs_buf_relse(bp);
> + return error;
> + }

> + if (!bp || bp->b_error) {
> xfs_warn(mp, "realtime device size check failed");
> + if (bp)
> + xfs_buf_relse(bp);
> return EIO;
> }
> xfs_buf_relse(bp);

It seems like all these callers would be a lot cleaner if we'd just
return the error as the return value, and a buffer as an indirect
pointer if and only if the read succeeded.