diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/filesystems/Locking | 2 | ||||
-rw-r--r-- | Documentation/filesystems/porting | 6 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 21 |
3 files changed, 16 insertions, 13 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 4fba54b9fcec..619af9bfdcb3 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -51,7 +51,6 @@ prototypes: | |||
51 | struct inode *, struct dentry *, unsigned int); | 51 | struct inode *, struct dentry *, unsigned int); |
52 | int (*readlink) (struct dentry *, char __user *,int); | 52 | int (*readlink) (struct dentry *, char __user *,int); |
53 | const char *(*get_link) (struct dentry *, struct inode *, void **); | 53 | const char *(*get_link) (struct dentry *, struct inode *, void **); |
54 | void (*put_link) (struct inode *, void *); | ||
55 | void (*truncate) (struct inode *); | 54 | void (*truncate) (struct inode *); |
56 | int (*permission) (struct inode *, int, unsigned int); | 55 | int (*permission) (struct inode *, int, unsigned int); |
57 | int (*get_acl)(struct inode *, int); | 56 | int (*get_acl)(struct inode *, int); |
@@ -84,7 +83,6 @@ rename: yes (all) (see below) | |||
84 | rename2: yes (all) (see below) | 83 | rename2: yes (all) (see below) |
85 | readlink: no | 84 | readlink: no |
86 | get_link: no | 85 | get_link: no |
87 | put_link: no | ||
88 | setattr: yes | 86 | setattr: yes |
89 | permission: no (may not block if called in rcu-walk mode) | 87 | permission: no (may not block if called in rcu-walk mode) |
90 | get_acl: no | 88 | get_acl: no |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index cf92a8c55594..0f88e6020487 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -515,3 +515,9 @@ in your dentry operations instead. | |||
515 | * ->get_link() gets inode as a separate argument | 515 | * ->get_link() gets inode as a separate argument |
516 | * ->get_link() may be called in RCU mode - in that case NULL | 516 | * ->get_link() may be called in RCU mode - in that case NULL |
517 | dentry is passed | 517 | dentry is passed |
518 | -- | ||
519 | [mandatory] | ||
520 | ->get_link() gets struct delayed_call *done now, and should do | ||
521 | set_delayed_call() where it used to set *cookie. | ||
522 | ->put_link() is gone - just give the destructor to set_delayed_call() | ||
523 | in ->get_link(). | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 8c6f07ad373a..b02a7d598258 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -350,8 +350,8 @@ struct inode_operations { | |||
350 | int (*rename2) (struct inode *, struct dentry *, | 350 | int (*rename2) (struct inode *, struct dentry *, |
351 | struct inode *, struct dentry *, unsigned int); | 351 | struct inode *, struct dentry *, unsigned int); |
352 | int (*readlink) (struct dentry *, char __user *,int); | 352 | int (*readlink) (struct dentry *, char __user *,int); |
353 | const char *(*follow_link) (struct dentry *, void **); | 353 | const char *(*get_link) (struct dentry *, struct inode *, |
354 | void (*put_link) (struct inode *, void *); | 354 | struct delayed_call *); |
355 | int (*permission) (struct inode *, int); | 355 | int (*permission) (struct inode *, int); |
356 | int (*get_acl)(struct inode *, int); | 356 | int (*get_acl)(struct inode *, int); |
357 | int (*setattr) (struct dentry *, struct iattr *); | 357 | int (*setattr) (struct dentry *, struct iattr *); |
@@ -434,20 +434,19 @@ otherwise noted. | |||
434 | readlink: called by the readlink(2) system call. Only required if | 434 | readlink: called by the readlink(2) system call. Only required if |
435 | you want to support reading symbolic links | 435 | you want to support reading symbolic links |
436 | 436 | ||
437 | follow_link: called by the VFS to follow a symbolic link to the | 437 | get_link: called by the VFS to follow a symbolic link to the |
438 | inode it points to. Only required if you want to support | 438 | inode it points to. Only required if you want to support |
439 | symbolic links. This method returns the symlink body | 439 | symbolic links. This method returns the symlink body |
440 | to traverse (and possibly resets the current position with | 440 | to traverse (and possibly resets the current position with |
441 | nd_jump_link()). If the body won't go away until the inode | 441 | nd_jump_link()). If the body won't go away until the inode |
442 | is gone, nothing else is needed; if it needs to be otherwise | 442 | is gone, nothing else is needed; if it needs to be otherwise |
443 | pinned, the data needed to release whatever we'd grabbed | 443 | pinned, arrange for its release by having get_link(..., ..., done) |
444 | is to be stored in void * variable passed by address to | 444 | do set_delayed_call(done, destructor, argument). |
445 | follow_link() instance. | 445 | In that case destructor(argument) will be called once VFS is |
446 | 446 | done with the body you've returned. | |
447 | put_link: called by the VFS to release resources allocated by | 447 | May be called in RCU mode; that is indicated by NULL dentry |
448 | follow_link(). The cookie stored by follow_link() is passed | 448 | argument. If request can't be handled without leaving RCU mode, |
449 | to this method as the last parameter; only called when | 449 | have it return ERR_PTR(-ECHILD). |
450 | cookie isn't NULL. | ||
451 | 450 | ||
452 | permission: called by the VFS to check for access rights on a POSIX-like | 451 | permission: called by the VFS to check for access rights on a POSIX-like |
453 | filesystem. | 452 | filesystem. |