diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-01-31 12:25:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-01-31 12:25:20 -0500 |
commit | 19e7b5f99474107e8d0b4b3e4652fa19ddb87efc (patch) | |
tree | 49f15b76c07b4c90d6fbd17b49d69017c81a4b58 /Documentation/filesystems | |
parent | 26064ea409b4d4acb05903a36f3fe2fdccb3d8aa (diff) | |
parent | ce4c253573ad184603e0fa77876ba155b0cde46d (diff) |
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull misc vfs updates from Al Viro:
"All kinds of misc stuff, without any unifying topic, from various
people.
Neil's d_anon patch, several bugfixes, introduction of kvmalloc
analogue of kmemdup_user(), extending bitfield.h to deal with
fixed-endians, assorted cleanups all over the place..."
* 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (28 commits)
alpha: osf_sys.c: use timespec64 where appropriate
alpha: osf_sys.c: fix put_tv32 regression
jffs2: Fix use-after-free bug in jffs2_iget()'s error handling path
dcache: delete unused d_hash_mask
dcache: subtract d_hash_shift from 32 in advance
fs/buffer.c: fold init_buffer() into init_page_buffers()
fs: fold __inode_permission() into inode_permission()
fs: add RWF_APPEND
sctp: use vmemdup_user() rather than badly open-coding memdup_user()
snd_ctl_elem_init_enum_names(): switch to vmemdup_user()
replace_user_tlv(): switch to vmemdup_user()
new primitive: vmemdup_user()
memdup_user(): switch to GFP_USER
eventfd: fold eventfd_ctx_get() into eventfd_ctx_fileget()
eventfd: fold eventfd_ctx_read() into eventfd_read()
eventfd: convert to use anon_inode_getfd()
nfs4file: get rid of pointless include of btrfs.h
uvc_v4l2: clean copyin/copyout up
vme_user: don't use __copy_..._user()
usx2y: don't bother with memdup_user() for 16-byte structure
...
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/nfs/Exporting | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/Documentation/filesystems/nfs/Exporting b/Documentation/filesystems/nfs/Exporting index 520a4becb75c..63889149f532 100644 --- a/Documentation/filesystems/nfs/Exporting +++ b/Documentation/filesystems/nfs/Exporting | |||
@@ -56,13 +56,25 @@ a/ A dentry flag DCACHE_DISCONNECTED which is set on | |||
56 | any dentry that might not be part of the proper prefix. | 56 | any dentry that might not be part of the proper prefix. |
57 | This is set when anonymous dentries are created, and cleared when a | 57 | This is set when anonymous dentries are created, and cleared when a |
58 | dentry is noticed to be a child of a dentry which is in the proper | 58 | dentry is noticed to be a child of a dentry which is in the proper |
59 | prefix. | 59 | prefix. If the refcount on a dentry with this flag set |
60 | 60 | becomes zero, the dentry is immediately discarded, rather than being | |
61 | b/ A per-superblock list "s_anon" of dentries which are the roots of | 61 | kept in the dcache. If a dentry that is not already in the dcache |
62 | subtrees that are not in the proper prefix. These dentries, as | 62 | is repeatedly accessed by filehandle (as NFSD might do), an new dentry |
63 | well as the proper prefix, need to be released at unmount time. As | 63 | will be a allocated for each access, and discarded at the end of |
64 | these dentries will not be hashed, they are linked together on the | 64 | the access. |
65 | d_hash list_head. | 65 | |
66 | Note that such a dentry can acquire children, name, ancestors, etc. | ||
67 | without losing DCACHE_DISCONNECTED - that flag is only cleared when | ||
68 | subtree is successfully reconnected to root. Until then dentries | ||
69 | in such subtree are retained only as long as there are references; | ||
70 | refcount reaching zero means immediate eviction, same as for unhashed | ||
71 | dentries. That guarantees that we won't need to hunt them down upon | ||
72 | umount. | ||
73 | |||
74 | b/ A primitive for creation of secondary roots - d_obtain_root(inode). | ||
75 | Those do _not_ bear DCACHE_DISCONNECTED. They are placed on the | ||
76 | per-superblock list (->s_roots), so they can be located at umount | ||
77 | time for eviction purposes. | ||
66 | 78 | ||
67 | c/ Helper routines to allocate anonymous dentries, and to help attach | 79 | c/ Helper routines to allocate anonymous dentries, and to help attach |
68 | loose directory dentries at lookup time. They are: | 80 | loose directory dentries at lookup time. They are: |
@@ -77,7 +89,6 @@ c/ Helper routines to allocate anonymous dentries, and to help attach | |||
77 | (such as an anonymous one created by d_obtain_alias), if appropriate. | 89 | (such as an anonymous one created by d_obtain_alias), if appropriate. |
78 | It returns NULL when the passed-in dentry is used, following the calling | 90 | It returns NULL when the passed-in dentry is used, following the calling |
79 | convention of ->lookup. | 91 | convention of ->lookup. |
80 | |||
81 | 92 | ||
82 | Filesystem Issues | 93 | Filesystem Issues |
83 | ----------------- | 94 | ----------------- |