linux_dsm_epyc7002/fs/xfs/quota
Dave Chinner 0fbca4d1c3 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>
2011-01-28 09:05:36 -06:00
..
xfs_dquot_item.c xfs: fix the xfs_log_iovec i_addr type 2010-07-26 13:16:36 -05:00
xfs_dquot_item.h xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_dquot.c xfs: use wait queues directly for the log wait queues 2010-12-21 12:09:01 +11:00
xfs_dquot.h xfs: remove xfs_dqmarker 2010-05-19 09:58:11 -05:00
xfs_qm_bhv.c xfs: Extend project quotas to support 32bit project ids 2010-10-18 15:08:08 -05:00
xfs_qm_stats.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_qm_stats.h [XFS] Replace __inline with inline 2008-04-18 11:51:15 +10:00
xfs_qm_syscalls.c xfs: Extend project quotas to support 32bit project ids 2010-10-18 15:08:08 -05:00
xfs_qm.c xfs: fix dquot shaker deadlock 2011-01-28 09:05:36 -06:00
xfs_qm.h xfs: convert the dquot free list to use list heads 2010-05-19 09:58:11 -05:00
xfs_quota_priv.h xfs: remove a few macro indirections in the quota code 2010-05-19 09:58:15 -05:00
xfs_trans_dquot.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00