aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slub.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2012-03-15 09:34:02 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-04-02 09:27:20 -0700
commita1bdf3aaf88552ce9820f90bae9d6f7e44831c60 (patch)
tree62c60cf667e02d13a19e189597df4e68b24e98d0 /mm/slub.c
parent8c1d85468871d5b70a8627b6e09d91e1603c4a13 (diff)
downloadkernel_samsung_smdk4412-a1bdf3aaf88552ce9820f90bae9d6f7e44831c60.zip
kernel_samsung_smdk4412-a1bdf3aaf88552ce9820f90bae9d6f7e44831c60.tar.gz
kernel_samsung_smdk4412-a1bdf3aaf88552ce9820f90bae9d6f7e44831c60.tar.bz2
xfs: Fix oops on IO error during xlog_recover_process_iunlinks()
commit d97d32edcd732110758799ae60af725e5110b3dc upstream. 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. Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/slub.c')
0 files changed, 0 insertions, 0 deletions