aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_bmap.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2011-01-28 11:20:46 +1100
committerAlex Elder <aelder@sgi.com>2011-01-28 09:05:36 -0600
commit0fbca4d1c3932c27c4794bf5c2b5fc961cf5a54f (patch)
tree3c031847453c5222410e04e40d1152207a1c18a2 /fs/xfs/xfs_bmap.c
parentc6f990d1ff8e4e53b12f4175eb7d7ea710c3ca73 (diff)
downloadkernel_samsung_smdk4412-0fbca4d1c3932c27c4794bf5c2b5fc961cf5a54f.zip
kernel_samsung_smdk4412-0fbca4d1c3932c27c4794bf5c2b5fc961cf5a54f.tar.gz
kernel_samsung_smdk4412-0fbca4d1c3932c27c4794bf5c2b5fc961cf5a54f.tar.bz2
xfs: fix dquot shaker deadlock
Commit 368e136 ("xfs: remove duplicate code from dquot reclaim") fails to unlock the dquot freelist when the number of loop restarts is exceeded in xfs_qm_dqreclaim_one(). This causes hangs in memory reclaim. Rework the loop control logic into an unwind stack that all the different cases jump into. This means there is only one set of code that processes the loop exit criteria, and simplifies the unlocking of all the items from different points in the loop. It also fixes a double increment of the restart counter from the qi_dqlist_lock case. Reported-by: Malcolm Scott <lkml@malc.org.uk> Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_bmap.c')
0 files changed, 0 insertions, 0 deletions