Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
VN_FULLPATH(9)	       FreeBSD Kernel Developer's Manual	VN_FULLPATH(9)

     vn_fullpath -- convert a vnode reference to a full	pathname, given	a
     process context

     #include <sys/param.h>
     #include <sys/vnode.h>

     vn_fullpath(struct	vnode *vp, char	**retbuf, char **freebuf);

     The vn_fullpath() function	makes a	"best effort" attempt to generate a
     string pathname for the passed vnode; the resulting path, if any, will be
     relative to the root directory of the process associated with the passed
     thread pointer.  The vn_fullpath()	function is implemented	by inspecting
     the VFS name cache, and attempting	to reconstruct a path from the process
     root to the object.

     This process is necessarily unreliable for	several	reasons: intermediate
     entries in	the path may not be found in the cache;	files may have more
     than one name (hard links), not all file systems use the name cache
     (specifically, most synthetic file	systems	do not); a single name may be
     used for more than	one file (in the context of file systems covering
     other file	systems); a file may have no name (if deleted but still	open
     or	referenced).  However, the resulting string may	still be more useable
     to	a user than a vnode pointer value, or a	device number and inode	num-
     ber.  Code	consuming the results of this function should anticipate (and
     properly handle) failure.

     Its arguments are:

     vp	      The vnode	to search for.	No need	to be locked by	the caller.

     retbuf   Pointer to a char	* that vn_fullpath() may (on success) point at
	      a	newly allocated	buffer containing the resulting	pathname.

     freebuf  Pointer to a char	* that vn_fullpath() may (on success) point at
	      a	buffer to be freed, when the caller is done with retbuf.

     Typical consumers will declare two	character pointers: fullpath and
     freepath; they will set freepath to NULL, and fullpath to a name to use
     in	the event that the call	to vn_fullpath() fails.	 After done with the
     value of fullpath,	the caller will	check if freepath is non-NULL, and if
     so, invoke	free(9)	with a pool type of M_TEMP.

     If	the vnode is successfully converted to a pathname, 0 is	returned; oth-
     erwise, an	error number is	returned.


     This manual page was written by Robert Watson <>.

FreeBSD	13.0			 June 15, 2021			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help