vfs, afs, ext4: Make the inode hash table RCU searchable
authorDavid Howells <dhowells@redhat.com>
Fri, 1 Dec 2017 11:40:16 +0000 (11:40 +0000)
committerDavid Howells <dhowells@redhat.com>
Sun, 31 May 2020 14:19:44 +0000 (15:19 +0100)
commit3f19b2ab97a97b413c24b66c67ae16daa4f56c35
treefd6be1d0f2b76589c05361dd95fefc365408529c
parent9cb1fd0efd195590b828b9b865421ad345a4a145
vfs, afs, ext4: Make the inode hash table RCU searchable

Make the inode hash table RCU searchable so that searches that want to
access or modify an inode without taking a ref on that inode can do so
without taking the inode hash table lock.

The main thing this requires is some RCU annotation on the list
manipulation operations.  Inodes are already freed by RCU in most cases.

Users of this interface must take care as the inode may be still under
construction or may be being torn down around them.

There are at least three instances where this can be of use:

 (1) Testing whether the inode number iunique() is going to return is
     currently unique (the iunique_lock is still held).

 (2) Ext4 date stamp updating.

 (3) AFS callback breaking.

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
cc: linux-ext4@vger.kernel.org
cc: linux-afs@lists.infradead.org
fs/afs/callback.c
fs/ext4/inode.c
fs/inode.c
include/linux/fs.h