Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 203bc643 authored by Al Viro's avatar Al Viro
Browse files

update Documentation/filesystems/ regarding the follow_link/put_link changes



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 8f47a016
Loading
Loading
Loading
Loading
+17 −0
Original line number Original line Diff line number Diff line
@@ -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.
+10 −8
Original line number Original line Diff line number Diff line
@@ -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.