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.