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 ex
isting 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 re
leased 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, other
wise an error
is returned.

PSEUDOCODE

int
vop_link(struct vnode *dvp, struct vnode *vp, struct compo
nentname *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 dif
ferent file
systems.

SEE ALSO

vn_lock(9), vnode(9)

AUTHORS

This manual page was originally written by Doug Rabson.
BSD July 24, 1996
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout