vop_remove(9)

NAME

VOP_REMOVE, VOP_RMDIR - remove a file or directory

SYNOPSIS

#include <sys/param.h>
#include <sys/vnode.h>
int
VOP_REMOVE(struct vnode *dvp, struct vnode *vp,
        struct componentname *cnp);
int
VOP_RMDIR(struct vnode *dvp, struct vnode *vp,
        struct componentname *cnp);

DESCRIPTION

These entry points remove files and directories respective
ly.
The arguments are:
dvp The vnode of the directory.
vp The vnode of the file to be removed.
cnp Pathname information about the file.

LOCKS

Both dvp and vp should be locked on entry and remain locked
on return.

RETURN VALUES

Zero is returned on success, otherwise an error code is re
turned.

PSEUDOCODE

int
vop_remove(struct vnode *dvp, struct vnode *vp, struct com
ponentname *cnp)
{
int error = 0;
if (vp is immutable) {
error = EPERM;
goto out;
}
/*
* Remove name cnp->cn_nameptr from directory and update
link count
* of vp.
*/
...;
/*
* Careful about trying to remove ".". XXX this should
be handled
* higher up.
*/
if (dvp == vp)
vrele(vp);
else
vput(vp);
vput(dvp);
return error;
}

ERRORS

[EPERM] The file is immutable.

[ENOTEMPTY] An attempt was made to remove a directory
which is not
empty.

SEE ALSO

vnode(9), VOP_LOOKUP(9)

AUTHORS

This manual page was written by Doug Rabson.
BSD July 24, 1996
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout