summaryrefslogtreecommitdiffstats
path: root/fs/stat.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2012-03-15 09:34:02 +0000
committerBen Myers <bpm@sgi.com>2012-03-27 16:34:10 -0500
commitd97d32edcd732110758799ae60af725e5110b3dc (patch)
treeb49bc097b289d123003695dcd1301cda5f091f4b /fs/stat.c
parenta66d636385d621e98a915233250356c394a437de (diff)
downloadblackbird-op-linux-d97d32edcd732110758799ae60af725e5110b3dc.tar.gz
blackbird-op-linux-d97d32edcd732110758799ae60af725e5110b3dc.zip
xfs: Fix oops on IO error during xlog_recover_process_iunlinks()
When an IO error happens during inode deletion run from xlog_recover_process_iunlinks() filesystem gets shutdown. Thus any subsequent attempt to read buffers fails. Code in xlog_recover_process_iunlinks() does not count with the fact that read of a buffer which was read a while ago can really fail which results in the oops on agi = XFS_BUF_TO_AGI(agibp); Fix the problem by cleaning up the buffer handling in xlog_recover_process_iunlinks() as suggested by Dave Chinner. We release buffer lock but keep buffer reference to AG buffer. That is enough for buffer to stay pinned in memory and we don't have to call xfs_read_agi() all the time. CC: stable@kernel.org Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/stat.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud