On Sun, Sep 03, 2023 at 09:15:53AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > Alter the definition of i_prev_unlinked slightly to make it more obvious > when an inode with 0 link count is not part of the iunlink bucket lists > rooted in the AGI. This distinction is necessary because it is not > sufficient to check inode.i_nlink to decide if an inode is on the > unlinked list. Updates to i_nlink can happen while holding only > ILOCK_EXCL, but updates to an inode's position in the AGI unlinked list > (which happen after the nlink update) requires both ILOCK_EXCL and the > AGI buffer lock. > > The next few patches will make it possible to reload an entire unlinked > bucket list when we're walking the inode table or performing handle > operations and need more than the ability to iget the last inode in the > chain. > > The upcoming directory repair code also needs to be able to make this > distinction to decide if a zero link count directory should be moved to > the orphanage or allowed to inactivate. An upcoming enhancement to the > online AGI fsck code will need this distinction to check and rebuild the > AGI unlinked buckets. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > fs/xfs/xfs_icache.c | 2 +- > fs/xfs/xfs_inode.c | 3 ++- > fs/xfs/xfs_inode.h | 20 +++++++++++++++++++- > 3 files changed, 22 insertions(+), 3 deletions(-) Looks ok. Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> -- Dave Chinner david@xxxxxxxxxxxxx