• Darrick J. Wong's avatar
    xfs: use i_prev_unlinked to distinguish inodes that are not on the unlinked list · f12b9668
    Darrick J. Wong authored
    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: default avatarDarrick J. Wong <djwong@kernel.org>
    f12b9668
xfs_icache.c 55.7 KB