lkml.org 
[lkml]   [2015]   [Mar]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
Subject[PATCH 0/9] Support follow_link in RCU-walk.
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



\
 
 \ /
  Last update: 2015-03-05 06:41    [W:0.126 / U:0.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site