On Fri, May 22, 2020 at 04:14:35PM -0700, Darrick J. Wong wrote: > On Fri, May 22, 2020 at 01:50:22PM +1000, Dave Chinner wrote: > > From: Dave Chinner <dchinner@xxxxxxxxxx> > > > > All background reclaim is SYNC_TRYLOCK already, and even blocking > > reclaim (SYNC_WAIT) can use trylock mechanisms as > > xfs_reclaim_inodes_ag() will keep cycling until there are no more > > reclaimable inodes. Hence we can kill SYNC_TRYLOCK from inode > > reclaim and make everything unconditionally non-blocking. > > Random question: Does xfs_quiesce_attr need to call xfs_reclaim_inodes > twice now, or does the second SYNC_WAIT call suffice now? I have another patch that drops it completely from xfs_quiesce_attr() because it is largely unnecessary. That got tangled up in a fixing other bugs in the patchset, so I dropped it to get this out the door rather than have to rewrite the patch -again-. Essentially, xfs_quiesce_attr() used inode reclaim to flush dirty inodes that the VFS didn't know about before we froze the filesystem. It's a historical artifact that dates back to before we logged every change to inodes, as AIL pushing couldn't clean unlogged inode changes. We don't actually need to reclaim inodes here now that xfs_log_quiesce() pushes the AIL and waits for all metadata writeback to complete. Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx