Re: [PATCH 17/24] xfs: remove SYNC_TRYLOCK from inode reclaim

Dave Chinner
2020-05-23T22:42:14Z

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@redhat.com>
> >
> > 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@fromorbit.com