diff options
author | Dave Chinner <dchinner@redhat.com> | 2013-02-27 03:25:54 +0100 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2013-03-07 19:31:02 +0100 |
commit | d5929de8337fef46f3e307914ed0f3cb845e66c1 (patch) | |
tree | a305ce6faa2c04b8a29801e9a04e6772b63caaf0 | |
parent | xfs: fix xfs_iomap_eof_prealloc_initial_size type (diff) | |
download | linux-d5929de8337fef46f3e307914ed0f3cb845e66c1.tar.xz linux-d5929de8337fef46f3e307914ed0f3cb845e66c1.zip |
xfs: don't verify buffers after IO errors
When we read a buffer, we might get an error from the underlying
block device and not the real data. Hence if we get an IO error, we
shouldn't run the verifier but instead just pass the IO error
straight through.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
-rw-r--r-- | fs/xfs/xfs_buf.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 4e8f0df82d02..50eb603e0cc1 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1022,7 +1022,9 @@ xfs_buf_iodone_work( bool read = !!(bp->b_flags & XBF_READ); bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_READ_AHEAD); - if (read && bp->b_ops) + + /* only validate buffers that were read without errors */ + if (read && bp->b_ops && !bp->b_error && (bp->b_flags & XBF_DONE)) bp->b_ops->verify_read(bp); if (bp->b_iodone) |