lkml.org 
[lkml]   [2015]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 110/110] update Documentation/filesystems/ regarding the follow_link/put_link changes
    Date
    From: Al Viro <viro@zeniv.linux.org.uk>

    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    ---
    Documentation/filesystems/porting | 17 +++++++++++++++++
    Documentation/filesystems/vfs.txt | 18 ++++++++++--------
    2 files changed, 27 insertions(+), 8 deletions(-)

    diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
    index e69274d..3eae250 100644
    --- a/Documentation/filesystems/porting
    +++ b/Documentation/filesystems/porting
    @@ -483,3 +483,20 @@ in your dentry operations instead.
    --
    [mandatory]
    ->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.
    diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
    index 542d935..b403b29 100644
    --- a/Documentation/filesystems/vfs.txt
    +++ b/Documentation/filesystems/vfs.txt
    @@ -436,16 +436,18 @@ otherwise noted.

    follow_link: called by the VFS to follow a symbolic link to the
    inode it points to. Only required if you want to support
    - symbolic links. This method returns a void pointer cookie
    - that is passed to put_link().
    + symbolic links. This method returns the symlink body
    + 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
    - follow_link(). The cookie returned by follow_link() is passed
    - to this method as the last parameter. It is used by
    - filesystems such as NFS where page cache is not stable
    - (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).
    + follow_link(). The cookie stored by follow_link() is passed
    + to this method as the last parameter; only called when
    + cookie isn't NULL.

    permission: called by the VFS to check for access rights on a POSIX-like
    filesystem.
    --
    2.1.4


    \
     
     \ /
      Last update: 2015-05-11 20:41    [W:4.213 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site