This series converts the XFS inode cache to use RCU freeing
for freeing of the inodes and uses RCU locking for all the lookups.
It uses the ip->i_ino values and ip->i_flags & XFS_IRECLAIM being
checked under the ip->i_flags_lock to detect inodes that have been
freed during lookups.
Version 3:
- add patch for specific RCU freeing of inodes rather than relying
on an external tree to provide RCU freeing functionality. This
uses standard RCU freeing mechanisms rather than
SLAB_DESTROY_BY_RCU. This is kept as a separate patch to minimise
the merge conflict issues that may arise if the change is made
through VFS code first.
- Drop specific references to SLAB_DESTROY_BY_RCU, but keep all the
lookup guards for reclaimed/reused inodes as they are mostly the
same for both methods of RCU inode freeing.
Version 2:
- check ip->i_ino under i_flags lock on cache hit
- remove duplicate ip->i_ino == 0 check in xfs_dqrele_inode
- Fixed inode cluster walks to check for valid i_ino under
i_flags_lock.
- Fixed ag walk lookups to check i_ino under i_flags_lock.
|