VFS_LOCK_GIANT9
Conditionally lock and unlock giant around entry into vfs
Usage
#include <sys/param.h>
#include <sys/vnode.h>
int
VFS_LOCK_GIANT(struct mount *mp);
void
VFS_UNLOCK_GIANT(int vfslocked);
Overview
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 or NDHASGIANT(9).
Return values
VFS_LOCK_GIANT() returns a boolean indicating whether or not Giant was acquired.