NAME
VFS_LOCK_GIANT, VFS_UNLOCK_GIANT - conditionally lock and unlock Giant
around entry into VFS
SYNOPSIS
#include <sys/param.h>
#include <sys/mount.h>
#include <sys/vnode.h>
int
VFS_LOCK_GIANT(struct mount *mp);
void
VFS_UNLOCK_GIANT(int vfslocked);
DESCRIPTION
VFS_LOCK_GIANT() will conditionally acquire the Giant lock if the file
system referenced by mp is marked as MPSAFE or not, returning a flag
indicating whether Giant was set, which may later be passed to
VFS_UNLOCK_GIANT(). The value of mp will typically be derived from the
mount pointer in a vnode on which a VFS operation will be performed.
VFS_UNLOCK_GIANT() conditionally releases the Giant lock if the passed
vfslocked argument is non-zero. It is expected that the argument will be
derived from the return values of VFS_LOCK_GIANT() or NDHASGIANT(9).
RETURN VALUES
VFS_LOCK_GIANT() returns a boolean indicating whether or not Giant was
acquired.
SEE ALSO
mutex(9), NDHASGIANT(9), vnode(9)
AUTHORS
MPSAFE VFS support for FreeBSD was implemented by Jeff Roberson.
This manual page was written by Robert Watson.
BUGS
Non-MPSAFE file systems exist, requiring callers conditional locking and
unlocking of Giant.