[XFS] Tight loop in xfs_finish_reclaim_all prevented the xfslogd to run its queue of IO completion callbacks, thus creating the deadlock between umount and xfslogd. Breaking the loop solves the problem.

SGI-PV: 943821
SGI-Modid: xfs-linux-melb:xfs-kern:202363a

Signed-off-by: Felix Blyakher <felixb@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>

authored by Felix Blyakher and committed by Nathan Scott 6b2cf618 a4656391

+3 -2
+3 -2
fs/xfs/xfs_vnodeops.c
··· 3958 3958 } 3959 3959 } 3960 3960 XFS_MOUNT_IUNLOCK(mp); 3961 - xfs_finish_reclaim(ip, noblock, 3962 - XFS_IFLUSH_DELWRI_ELSE_ASYNC); 3961 + if (xfs_finish_reclaim(ip, noblock, 3962 + XFS_IFLUSH_DELWRI_ELSE_ASYNC)) 3963 + delay(1); 3963 3964 purged = 1; 3964 3965 break; 3965 3966 }