Skip to content

Support follow_link in RCU-walk - V3

NeilBrown linux-fsdevel lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest20 patches 8 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/20Documentation: remove outdated information from automount-support.txtDocumentation/filesystems/automount-support.txt+13 -380 replies
2/20STAGING/lustre: limit follow_link recursion using stack space.drivers/staging/lustre/lustre/llite/symlink.c+14 -74 replies
3/20VFS: replace {, total_}link_count in task_struct with pointer to nameidatafs/namei.c include/linux/sched.h+55 -260 replies
4/20ovl: rearrange ovl_follow_link to it doesn't need to call ->put_linkfs/overlayfs/inode.c+12 -130 replies
5/20VFS: replace nameidata arg to ->put_link with a char*.Documentation/filesystems/Locking Documentation/filesystems/porting Documentation/filesystems/vfs.txt +15 more+34 -350 replies
6/20SECURITY: remove nameidata arg from inode_follow_link.fs/namei.c include/linux/security.h security/capability.c +2 more+8 -120 replies
7/20VFS: remove nameidata args from ->follow_linkDocumentation/filesystems/Locking Documentation/filesystems/porting Documentation/filesystems/vfs.txt +40 more+104 -1050 replies
8/20VFS: make all ->follow_link handlers aware for LOOKUP_RCUDocumentation/filesystems/Locking Documentation/filesystems/porting Documentation/filesystems/vfs.txt +37 more+211 -880 replies
9/20security/selinux: pass 'flags' arg to avc_audit() and avc_has_perm_flags()security/selinux/avc.c security/selinux/hooks.c security/selinux/include/avc.h+25 -40 replies
10/20security: make inode_follow_link RCU-walk awarefs/namei.c include/linux/security.h security/capability.c +2 more+34 -100 replies
11/20VFS/namei: use terminate_walk when symlink lookup fails.fs/namei.c+20 -200 replies
12/20VFS/namei: new flag to support RCU symlinks: LOOKUP_LINK_RCU.fs/namei.c include/linux/namei.h+14 -50 replies
13/20VFS/namei: abort RCU-walk on symlink if atime needs updating.fs/inode.c fs/namei.c include/linux/fs.h+26 -80 replies
14/20VFS/namei: add 'inode' arg to put_link().Documentation/filesystems/porting fs/namei.c+16 -83 replies
15/20VFS/namei: enhance follow_link to support RCU-walk.fs/namei.c+19 -80 replies
16/20VFS/namei: enable RCU-walk when following symlinks.fs/namei.c+3 -180 replies
17/20VFS/namei: handle LOOKUP_RCU in page_follow_link_light.fs/namei.c+36 -90 replies
18/20xfs: use RCU to free 'struct xfs_mount'.fs/xfs/xfs_mount.h fs/xfs/xfs_super.c+3 -10 replies
19/20XFS: allow follow_link to often succeed in RCU-walk.fs/xfs/xfs_ioctl.c fs/xfs/xfs_iops.c fs/xfs/xfs_super.c +2 more+25 -110 replies
20/20NFS: support LOOKUP_RCU in nfs_follow_link.fs/nfs/inode.c fs/nfs/symlink.c include/linux/nfs_fs.h+40 -20 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/20] Support follow_link in RCU-walk - V3

Hi Al,
thanks for all your review help - particularly the fact that dentry->d_inode is not stable in RCU-walk. That has lead to a number of changes.

I think this set addresses all of your review comments, improves some documentation, and has a go at providing a solution for lustre.

I hope to organize some proper testing soon, so I can confirm that it makes certain loads a lot faster.

Thanks,
NeilBrown

---

NeilBrown (20):
Documentation: remove outdated information from automount-support.txt STAGING/lustre: limit follow_link recursion using stack space.
VFS: replace {,total_}link_count in task_struct with pointer to nameidata
ovl: rearrange ovl_follow_link to it doesn't need to call ->put_link
VFS: replace nameidata arg to ->put_link with a char*.
SECURITY: remove nameidata arg from inode_follow_link.
VFS: remove nameidata args from ->follow_link
VFS: make all ->follow_link handlers aware for LOOKUP_RCU security/selinux: pass 'flags' arg to avc_audit() and avc_has_perm_flags()
security: make inode_follow_link RCU-walk aware
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: add 'inode' arg to put_link().
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: use RCU to free 'struct xfs_mount'.
XFS: allow follow_link to often succeed in RCU-walk.
NFS: support LOOKUP_RCU in nfs_follow_link.

 Documentation/filesystems/Locking               |    4 
 Documentation/filesystems/automount-support.txt |   51 +---
 Documentation/filesystems/porting               |   23 ++
 Documentation/filesystems/vfs.txt               |    4 
 drivers/staging/lustre/lustre/llite/symlink.c   |   32 ++-
 fs/9p/v9fs.h                                    |    2 
 fs/9p/vfs_inode.c                               |   19 +-
 fs/9p/vfs_inode_dotl.c                          |   13 +
 fs/autofs4/symlink.c                            |    6 
 fs/befs/linuxvfs.c                              |   19 +-
 fs/ceph/inode.c                                 |    7 -
 fs/cifs/cifsfs.h                                |    3 
 fs/cifs/link.c                                  |    7 -
 fs/configfs/symlink.c                           |   16 +
 fs/debugfs/file.c                               |    5 
 fs/ecryptfs/inode.c                             |   16 +
 fs/exofs/symlink.c                              |    8 -
 fs/ext2/symlink.c                               |    7 -
 fs/ext3/symlink.c                               |    7 -
 fs/ext4/symlink.c                               |    7 -
 fs/freevxfs/vxfs_immed.c                        |   12 +
 fs/fuse/dir.c                                   |   11 +
 fs/gfs2/inode.c                                 |   14 +
 fs/hostfs/hostfs_kern.c                         |   15 +
 fs/hppfs/hppfs.c                                |   13 +
 fs/inode.c                                      |   26 ++
 fs/jffs2/symlink.c                              |   10 -
 fs/jfs/symlink.c                                |    7 -
 fs/kernfs/symlink.c                             |   15 +
 fs/libfs.c                                      |    4 
 fs/namei.c                                      |  281 +++++++++++++++--------
 fs/nfs/inode.c                                  |   21 ++
 fs/nfs/symlink.c                                |   26 ++
 fs/ntfs/namei.c                                 |    1 
 fs/overlayfs/inode.c                            |   35 ++-
 fs/proc/base.c                                  |    8 -
 fs/proc/inode.c                                 |    9 -
 fs/proc/namespaces.c                            |    9 -
 fs/proc/self.c                                  |   12 +
 fs/proc/thread_self.c                           |   15 +
 fs/sysv/symlink.c                               |    5 
 fs/ubifs/file.c                                 |    7 -
 fs/ufs/symlink.c                                |    8 -
 fs/xfs/xfs_ioctl.c                              |    2 
 fs/xfs/xfs_iops.c                               |   20 +-
 fs/xfs/xfs_mount.h                              |    2 
 fs/xfs/xfs_super.c                              |    4 
 fs/xfs/xfs_symlink.c                            |   15 +
 fs/xfs/xfs_symlink.h                            |    2 
 include/linux/fs.h                              |   12 -
 include/linux/namei.h                           |    7 -
 include/linux/nfs_fs.h                          |    1 
 include/linux/sched.h                           |    3 
 include/linux/security.h                        |   13 +
 mm/shmem.c                                      |   20 +-
 security/capability.c                           |    4 
 security/security.c                             |    7 -
 security/selinux/avc.c                          |   18 +
 security/selinux/hooks.c                        |   21 +-
 security/selinux/include/avc.h                  |    9 +
 60 files changed, 632 insertions(+), 348 deletions(-)

--
Signature