mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
update Documentation/filesystems/ regarding the follow_link/put_link changes
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
8f47a0167c
commit
203bc643db
|
|
@ -483,3 +483,20 @@ in your dentry operations instead.
|
||||||
--
|
--
|
||||||
[mandatory]
|
[mandatory]
|
||||||
->aio_read/->aio_write are gone. Use ->read_iter/->write_iter.
|
->aio_read/->aio_write are gone. Use ->read_iter/->write_iter.
|
||||||
|
---
|
||||||
|
[recommended]
|
||||||
|
for embedded ("fast") symlinks just set inode->i_link to wherever the
|
||||||
|
symlink body is and use simple_follow_link() as ->follow_link().
|
||||||
|
--
|
||||||
|
[mandatory]
|
||||||
|
calling conventions for ->follow_link() have changed. Instead of returning
|
||||||
|
cookie and using nd_set_link() to store the body to traverse, we return
|
||||||
|
the body to traverse and store the cookie using explicit void ** argument.
|
||||||
|
nameidata isn't passed at all - nd_jump_link() doesn't need it and
|
||||||
|
nd_[gs]et_link() is gone.
|
||||||
|
--
|
||||||
|
[mandatory]
|
||||||
|
calling conventions for ->put_link() have changed. It gets inode instead of
|
||||||
|
dentry, it does not get nameidata at all and it gets called only when cookie
|
||||||
|
is non-NULL. Note that link body isn't available anymore, so if you need it,
|
||||||
|
store it as cookie.
|
||||||
|
|
|
||||||
|
|
@ -436,16 +436,18 @@ otherwise noted.
|
||||||
|
|
||||||
follow_link: called by the VFS to follow a symbolic link to the
|
follow_link: called by the VFS to follow a symbolic link to the
|
||||||
inode it points to. Only required if you want to support
|
inode it points to. Only required if you want to support
|
||||||
symbolic links. This method returns a void pointer cookie
|
symbolic links. This method returns the symlink body
|
||||||
that is passed to put_link().
|
to traverse (and possibly resets the current position with
|
||||||
|
nd_jump_link()). If the body won't go away until the inode
|
||||||
|
is gone, nothing else is needed; if it needs to be otherwise
|
||||||
|
pinned, the data needed to release whatever we'd grabbed
|
||||||
|
is to be stored in void * variable passed by address to
|
||||||
|
follow_link() instance.
|
||||||
|
|
||||||
put_link: called by the VFS to release resources allocated by
|
put_link: called by the VFS to release resources allocated by
|
||||||
follow_link(). The cookie returned by follow_link() is passed
|
follow_link(). The cookie stored by follow_link() is passed
|
||||||
to this method as the last parameter. It is used by
|
to this method as the last parameter; only called when
|
||||||
filesystems such as NFS where page cache is not stable
|
cookie isn't NULL.
|
||||||
(i.e. page that was installed when the symbolic link walk
|
|
||||||
started might not be in the page cache at the end of the
|
|
||||||
walk).
|
|
||||||
|
|
||||||
permission: called by the VFS to check for access rights on a POSIX-like
|
permission: called by the VFS to check for access rights on a POSIX-like
|
||||||
filesystem.
|
filesystem.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user