Manpage of 'VOP_LINK' on UHLU - BSD System Documentation,
Programming Reference, Manual Pages and Source Code
All manual pages         All RFC pages
Common page
for VOP_LINK
Other pages
for VOP_LINK
More pages
containing VOP_LINK

Section 9 manual page or howto for 'VOP_LINK'  

VOP_LINK(9)	       FreeBSD Kernel Developer's Manual	   VOP_LINK(9)

NAME
     VOP_LINK -- create a new name for a file

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

     int
     VOP_LINK(struct vnode *dvp, struct vnode *vp, struct componentname *cnp);

DESCRIPTION
     This links a new name in the specified directory to an existing file.

     Its arguments are:

     dvp       The vnode of the directory.

     vp        The vnode of the file to be linked.

     cnp       Pathname information about the file.

     The pathname info should not be released on exit because it is done by
     the caller.  The directory and file vnodes should not be released on
     exit.

LOCKS
     VOP_LINK() expects the directory and file vnodes to be locked on entry
     and will leave the vnodes locked on return.

RETURN VALUES
     Zero is returned if the file was linked successfully, otherwise an error
     is returned.

PSEUDOCODE
     int
     vop_link(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
     {

	 int error = 0;

	 if (vp->v_mount != dvp->v_mount)
	     return (EXDEV);

	 if (vp would have too many links)
	     return (EMLINK);

	 if (vp is immutable)
	     return (EPERM);

	 /*
	  * Increment link count of vp and write back the on-disc version of it.
	  */

	 ...;

	 if (!error) {
	     /*
	      * Add the new name to the directory.
	      */

	     ...;

	 }

	 return error;
     }

ERRORS
     [EMLINK]		The file has too many links.

     [EPERM]		The file is immutable.

     [EXDEV]		A hard link is not possible between different file

			systems.

SEE ALSO
     vn_lock(9), vnode(9)

AUTHORS
     This manual page was originally written by Doug Rabson.

FreeBSD 7.2			 July 24, 1996			   FreeBSD 7.2

NAME - SYNOPSIS - DESCRIPTION - LOCKS - RETURN VALUES - PSEUDOCODE - 
ERRORS - SEE ALSO - AUTHORS -  
All manual pages         All RFC pages
Common page
for VOP_LINK
Other pages
for VOP_LINK
More pages
containing VOP_LINK
A random manual page         All manual pages        All RFC pages