autofs4: allow RCU-walk to walk through autofs4
authorNeilBrown <[email protected]>
Mon, 13 Oct 2014 22:52:14 +0000 (15:52 -0700)
committerLinus Torvalds <[email protected]>
Tue, 14 Oct 2014 00:18:16 +0000 (02:18 +0200)
commit23bfc2a24ea3d993cc5cc90c9970654e7232502e
treea2bc0e834578b8b8559e255363e9b95d08158e97
parent8a273345dcb1d74d12f28a0a76320b23e7e32f55
autofs4: allow RCU-walk to walk through autofs4

This series teaches autofs about RCU-walk so that we don't drop straight
into REF-walk when we hit an autofs directory, and so that we avoid
spinlocks as much as possible when performing an RCU-walk.

This is needed so that the benefits of the recent NFS support for
RCU-walk are fully available when NFS filesystems are automounted.

Patches have been carefully reviewed and tested both with test suites
and in production - thanks a lot to Ian Kent for his support there.

This patch (of 6):

Any attempt to look up a pathname that passes though an autofs4 mount is
currently forced out of RCU-walk into REF-walk.

This can significantly hurt performance of many-thread work loads on
many-core systems, especially if the automounted filesystem supports
RCU-walk but doesn't get to benefit from it.

So if autofs4_d_manage is called with rcu_walk set, only fail with -ECHILD
if it is necessary to wait longer than a spinlock.

Signed-off-by: NeilBrown <[email protected]>
Reviewed-by: Ian Kent <[email protected]>
Tested-by: Ian Kent <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
fs/autofs4/autofs_i.h
fs/autofs4/dev-ioctl.c
fs/autofs4/expire.c
fs/autofs4/root.c