Ubuntu Manpages

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

int
VOP_LOCK(struct vnode *vp, int flags);

int
VOP_UNLOCK(struct vnode *vp, int flags);

int
VOP_ISLOCKED(struct vnode *vp);

int
vn_lock(struct vnode *vp, int flags);

These calls are used to serialize access to the file system, such as to prevent two writes to the same file from happening at the same time.

The arguments are:

vp
The vnode being locked or unlocked.
flags
One of the lock request types:

Shared lock.
Exclusive lock.
Shared-to-exclusive upgrade.
Exclusive-to-shared downgrade.
Release any type of lock.
Wait for all lock activity to end.

The lock type may be or'ed with these lock flags:

Do not sleep to wait for lock.
Sleep, then return failure.
Allow recursive exclusive lock.
Instruct witness(4) to ignore this instance.

The lock type may be or'ed with these control flags:

Specify when the caller already has a simple lock (() will unlock the simple lock after getting the lock).
Retry until locked.

Kernel code should use () to lock a vnode rather than calling VOP_LOCK() directly. vn_lock() also does not want a thread specified as argument but it assumes curthread to be used.

Zero is returned on success, otherwise an error is returned.

vnode(9)

This manual page was written by Doug Rabson.