[PATCH 0/9] Support follow_link in RCU-walk.

From: NeilBrown
Date: Thu Mar 05 2015 - 00:22:32 EST


Hi Al (and others),

I wonder if you could look over this patchset.
It allows RCU-walk to follow symlinks in many common cases,
thus removing a surprising performance hit caused by using symlinks.

The last could of patches make changes to XFS and NFS to support
this but I haven't forwarded to the relevant lists yet.
If/when the early code meets with approval I'll do that.

The first patch almost certainly needs to be changed. I originally
wrote this code when filesystems could see inside nameidata.
It is now opaque so the simplest solution was to provide an
accessor function.
Maybe I should as a 'flags' arg to ->follow_link?? Or have
->follow_link and ->follow_link_rcu ??
What do you suggest?


Thanks,
NeilBrown


---

NeilBrown (9):
FS: make all ->follow_link handlers aware for LOOKUP_RCU
VFS/namei: use terminate_walk when symlink lookup fails.
VFS/namei: new flag to support RCU symlinks: LOOKUP_LINK_RCU.
VFS/namei: abort RCU-walk on symlink if atime needs updating.
VFS/namei: enhance follow_link to support RCU-walk.
VFS/namei: enable RCU-walk when following symlinks.
VFS/namei: handle LOOKUP_RCU in page_follow_link_light.
XFS: allow follow_link to often succeed in RCU-walk.
NFS: support LOOKUP_RCU in nfs_follow_link.


drivers/staging/lustre/lustre/llite/symlink.c | 3 +
fs/9p/vfs_inode.c | 6 +
fs/9p/vfs_inode_dotl.c | 5 +
fs/befs/linuxvfs.c | 2
fs/cifs/link.c | 2
fs/configfs/symlink.c | 7 +
fs/ecryptfs/inode.c | 7 +
fs/fuse/dir.c | 2
fs/gfs2/inode.c | 2
fs/hostfs/hostfs_kern.c | 7 +
fs/inode.c | 26 ++++-
fs/kernfs/symlink.c | 7 +
fs/namei.c | 132 ++++++++++++++++---------
fs/nfs/inode.c | 22 ++++
fs/nfs/symlink.c | 17 +++
fs/overlayfs/inode.c | 3 +
fs/proc/base.c | 2
fs/proc/namespaces.c | 3 +
fs/proc/self.c | 4 +
fs/proc/thread_self.c | 4 +
fs/xfs/xfs_ioctl.c | 2
fs/xfs/xfs_iops.c | 13 ++
fs/xfs/xfs_symlink.c | 11 ++
fs/xfs/xfs_symlink.h | 2
include/linux/fs.h | 2
include/linux/namei.h | 1
include/linux/nfs_fs.h | 1
mm/shmem.c | 6 +
28 files changed, 234 insertions(+), 67 deletions(-)

--
Signature

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/