Provided by: freebsd-manpages_12.2-1_all bug

NAME

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

SYNOPSIS

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

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

DESCRIPTION

       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 number.  Code consuming the results of this function
       should anticipate (and properly handle) failure.

       Its arguments are:

       td       The thread performing the call; this pointer will be dereferenced to find the  process  and  its
                file descriptor structure, in order to identify the root vnode to use.

       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.

RETURN VALUES

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

SEE ALSO

       free(9)

AUTHORS

       This manual page was written by Robert Watson <rwatson@FreeBSD.org>.

Debian                                          November 23, 2008                                 VN_FULLPATH(9)