xfs: introduce xfs_iunlink_lookup
authorDave Chinner <dchinner@redhat.com>
Thu, 14 Jul 2022 01:43:09 +0000 (11:43 +1000)
committerDave Chinner <david@fromorbit.com>
Thu, 14 Jul 2022 01:43:09 +0000 (11:43 +1000)
commita83d5a8b1d946264e24299d6697bb03fe5198668
treec6272a2c0cfaf01c379536ccfef21f0deb668d7c
parent04755d2e5821b3afbaadd09fe5df58d04de36484
xfs: introduce xfs_iunlink_lookup

When an inode is on an unlinked list during normal operation, it is
guaranteed to be pinned in memory as it is either referenced by the
current unlink operation or it has a open file descriptor that
references it and has it pinned in memory. Hence to look up an inode
on the unlinked list, we can do a direct inode cache lookup and
always expect the lookup to succeed.

Add a function to do this lookup based on the agino that we use to
link the chain of unlinked inodes together so we can begin the
conversion the unlinked list manipulations to use in-memory inodes
rather than inode cluster buffers and remove the backref cache.

Use this lookup function to replace the on-disk inode buffer walk
when removing inodes from the unlinked list with an in-core inode
unlinked list walk.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_inode.c
fs/xfs/xfs_trace.h