xfs: don't block on buffer read errors
authorDave Chinner <dchinner@redhat.com>
Tue, 20 Jul 2010 07:52:59 +0000 (17:52 +1000)
committerAlex Elder <aelder@sgi.com>
Mon, 26 Jul 2010 18:16:48 +0000 (13:16 -0500)
commitec53d1dbb3ca960e7b552397613358ba1dbd12bd
tree9b04fd4e4f1149ce0b5927c9f9a89d26fa6a3d4a
parenta4190f90b4e22bde8b01b0086e00dd95439e2edd
xfs: don't block on buffer read errors

xfs_buf_read() fails to detect dispatch errors before attempting to
wait on sychronous IO. If there was an error, it will get stuck
forever, waiting for an I/O that was never started. Make sure the
error is detected correctly.

Further, such a failure can leave locked pages in the page cache
which will cause a later operation to hang on the page. Ensure that
we correctly process pages in the buffers when we get a dispatch
error.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/linux-2.6/xfs_buf.c