logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

VOP_LOCK, VOP_UNLOCK, VOP_ISLOCKED, vn_lock — serialize access to a vnode

Authors

       This manual page was written by Doug Rabson.

Debian                                          February 25, 2008                                    VOP_LOCK(9)

Description

       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:

                    LK_SHARED      Shared lock.
                    LK_EXCLUSIVE   Exclusive lock.
                    LK_UPGRADE     Shared-to-exclusive upgrade.
                    LK_DOWNGRADE   Exclusive-to-shared downgrade.
                    LK_RELEASE     Release any type of lock.
                    LK_DRAIN       Wait for all lock activity to end.

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

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

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

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

              Kernel code should use vn_lock()  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.

Name

       VOP_LOCK, VOP_UNLOCK, VOP_ISLOCKED, vn_lock — serialize access to a vnode

Return Values

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

See Also

vnode(9)

Synopsis

#include<sys/param.h>#include<sys/lock.h>#include<sys/vnode.h>intVOP_LOCK(structvnode*vp, intflags);

       intVOP_UNLOCK(structvnode*vp, intflags);

       intVOP_ISLOCKED(structvnode*vp);

       intvn_lock(structvnode*vp, intflags);

See Also