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 updatelink count
* of vp.
*/ - ...;
- /*
* Careful about trying to remove ".". XXX this shouldbe 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
AUTHORS
- This manual page was written by Doug Rabson.
- BSD July 24, 1996