There was an error fetching the commit references. Please try again later.
fs: rcu-walk for path lookup
Perform common cases of path lookups without any stores or locking in the ancestor dentry elements. This is called rcu-walk, as opposed to the current algorithm which is a refcount based walk, or ref-walk. This results in far fewer atomic operations on every path element, significantly improving path lookup performance. It also avoids cacheline bouncing on common dentries, significantly improving scalability. The overall design is like this: * LOOKUP_RCU is set in nd->flags, which distinguishes rcu-walk from ref-walk. * Take the RCU lock for the entire path walk, starting with the acquiring of the starting path (eg. root/cwd/fd-path). So now dentry refcounts are not required for dentry persistence. * synchronize_rcu is called when unregistering a filesystem, so we can access d_ops and i_ops during rcu-walk. * Similarly take the vfsmount lock for the entire path walk. So now mnt refcounts are not required for persistence. Also we are free to perform mount lookups, a...
Showing
- Documentation/filesystems/dentry-locking.txt 0 additions, 172 deletionsDocumentation/filesystems/dentry-locking.txt
- Documentation/filesystems/path-lookup.txt 345 additions, 0 deletionsDocumentation/filesystems/path-lookup.txt
- fs/dcache.c 181 additions, 22 deletionsfs/dcache.c
- fs/filesystems.c 3 additions, 0 deletionsfs/filesystems.c
- fs/namei.c 606 additions, 137 deletionsfs/namei.c
- fs/proc/proc_sysctl.c 4 additions, 0 deletionsfs/proc/proc_sysctl.c
- include/linux/dcache.h 29 additions, 3 deletionsinclude/linux/dcache.h
- include/linux/namei.h 10 additions, 5 deletionsinclude/linux/namei.h
- include/linux/security.h 7 additions, 1 deletioninclude/linux/security.h
- security/security.c 9 additions, 0 deletionssecurity/security.c
Please register or sign in to comment