insmntque
,
insmntque1
— associate a
vnode with a mount
#include
<sys/param.h>
#include <sys/vnode.h>
int
insmntque
(struct
vnode *vp, struct mount
*mp);
int
insmntque1
(struct
vnode *vp, struct mount
*mp);
The
insmntque
()
function associates a vnode with a mount. This includes updating
v_mount for the vnode, and inserting the vnode into
the mount's vnode list.
The indirect mount reference count, maintained as the count of the
vnodes owned by it, is incremented for each vnode added to the mount, and
that reference is decremented by
vgone(9).
The mount's interlock is held while the vnode is inserted. The
vnode must be exclusively locked.
On failure,
insmntque
()
resets vnode' operation vector to the vector of
deadfs(9),
clears v_data, and then calls
vgone(9)
and
vput(9).
If more elaborated cleanup after insmntque
() failure
is needed, the
insmntque1
()
function may be used instead. It does not do any cleanup following a
failure, leaving all the work to the caller. In particular, the operation
vector v_op and v_data fields of
the vnode are kept intact.
The insmntque
() function will always
return 0, unless the file system is currently being unmounted in which case
it may return EBUSY
. Also,
insmntque
() may be forced to insert the vnode into
the mount's vnode list by setting the VV_FORCEINSMQ
flag in the vnode v_flag, even if the file system is
being unmounted.