diff options
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/Locking | 2 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 5f0c52a07386..cbf98b989b11 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -20,6 +20,7 @@ prototypes: | |||
20 | void (*d_iput)(struct dentry *, struct inode *); | 20 | void (*d_iput)(struct dentry *, struct inode *); |
21 | char *(*d_dname)((struct dentry *dentry, char *buffer, int buflen); | 21 | char *(*d_dname)((struct dentry *dentry, char *buffer, int buflen); |
22 | struct vfsmount *(*d_automount)(struct path *path); | 22 | struct vfsmount *(*d_automount)(struct path *path); |
23 | int (*d_manage)(struct dentry *, bool); | ||
23 | 24 | ||
24 | locking rules: | 25 | locking rules: |
25 | rename_lock ->d_lock may block rcu-walk | 26 | rename_lock ->d_lock may block rcu-walk |
@@ -31,6 +32,7 @@ d_release: no no yes no | |||
31 | d_iput: no no yes no | 32 | d_iput: no no yes no |
32 | d_dname: no no no no | 33 | d_dname: no no no no |
33 | d_automount: no no yes no | 34 | d_automount: no no yes no |
35 | d_manage: no no yes no | ||
34 | 36 | ||
35 | --------------------------- inode_operations --------------------------- | 37 | --------------------------- inode_operations --------------------------- |
36 | prototypes: | 38 | prototypes: |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 726a4f6fa3c9..4682586b147a 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -865,6 +865,7 @@ struct dentry_operations { | |||
865 | void (*d_iput)(struct dentry *, struct inode *); | 865 | void (*d_iput)(struct dentry *, struct inode *); |
866 | char *(*d_dname)(struct dentry *, char *, int); | 866 | char *(*d_dname)(struct dentry *, char *, int); |
867 | struct vfsmount *(*d_automount)(struct path *); | 867 | struct vfsmount *(*d_automount)(struct path *); |
868 | int (*d_manage)(struct dentry *, bool); | ||
868 | }; | 869 | }; |
869 | 870 | ||
870 | d_revalidate: called when the VFS needs to revalidate a dentry. This | 871 | d_revalidate: called when the VFS needs to revalidate a dentry. This |
@@ -938,12 +939,30 @@ struct dentry_operations { | |||
938 | target and the parent VFS mount record to provide inheritable mount | 939 | target and the parent VFS mount record to provide inheritable mount |
939 | parameters. NULL should be returned if someone else managed to make | 940 | parameters. NULL should be returned if someone else managed to make |
940 | the automount first. If the automount failed, then an error code | 941 | the automount first. If the automount failed, then an error code |
941 | should be returned. | 942 | should be returned. If -EISDIR is returned, then the directory will |
943 | be treated as an ordinary directory and returned to pathwalk to | ||
944 | continue walking. | ||
942 | 945 | ||
943 | This function is only used if DCACHE_NEED_AUTOMOUNT is set on the | 946 | This function is only used if DCACHE_NEED_AUTOMOUNT is set on the |
944 | dentry. This is set by __d_instantiate() if S_AUTOMOUNT is set on the | 947 | dentry. This is set by __d_instantiate() if S_AUTOMOUNT is set on the |
945 | inode being added. | 948 | inode being added. |
946 | 949 | ||
950 | d_manage: called to allow the filesystem to manage the transition from a | ||
951 | dentry (optional). This allows autofs, for example, to hold up clients | ||
952 | waiting to explore behind a 'mountpoint' whilst letting the daemon go | ||
953 | past and construct the subtree there. 0 should be returned to let the | ||
954 | calling process continue. -EISDIR can be returned to tell pathwalk to | ||
955 | use this directory as an ordinary directory and to ignore anything | ||
956 | mounted on it and not to check the automount flag. Any other error | ||
957 | code will abort pathwalk completely. | ||
958 | |||
959 | If the 'mounting_here' parameter is true, then namespace_sem is being | ||
960 | held by the caller and the function should not initiate any mounts or | ||
961 | unmounts that it will then wait for. | ||
962 | |||
963 | This function is only used if DCACHE_MANAGE_TRANSIT is set on the | ||
964 | dentry being transited from. | ||
965 | |||
947 | Example : | 966 | Example : |
948 | 967 | ||
949 | static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen) | 968 | static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen) |