:man| Alphabetical   Categories   About us 
 
VOP_REMOVE (9) | Kernel routines | Unix Manual Pages | :man

NAME

VOP_REMOVE, VOP_RMDIR - remove a file or directory

CONTENTS

Synopsis
Description
Locks
Return Values
Pseudocode
Errors
See Also
Authors

SYNOPSIS


.In sys/param.h
.In 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 respectively.

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 returned.

PSEUDOCODE


int
vop_remove(struct vnode *dvp, struct vnode *vp, struct componentname *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

 
Created by Blin Media, 2008-2013