1.\" Copyright (C) 2008 Chad David <davidc@acns.ab.ca>. 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice(s), this list of conditions and the following disclaimer as 9.\" the first lines of this file unmodified other than the possible 10.\" addition of one or more copyright notices. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice(s), this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 15.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY 16.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18.\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 19.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 22.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 25.\" DAMAGE. 26.\" 27.\" $FreeBSD$ 28.\" 29.Dd September 8, 2008 30.Dt INSMNTQUE 9 31.Os 32.Sh NAME 33.Nm insmntque , 34.Nm insmntque1 35.Nd "associate a vnode with a mount" 36.Sh SYNOPSIS 37.In sys/param.h 38.In sys/vnode.h 39.Ft int 40.Fn insmntque "struct vnode *vp" "struct mount *mp" 41.Ft int 42.Fn insmntque1 "struct vnode *vp" "struct mount *mp" "void (*dtr)(struct vnode *, void *)" "void *dtr_arg" 43.Sh DESCRIPTION 44The 45.Fn insmntque 46function associates a vnode with a mount. 47This includes updating 48.Va v_mount 49for the vnode, and inserting the vnode into the mount's vnode list. 50.Pp 51The mount reference count is incremented for each vnode added to the 52mount, and that reference is decremented by 53.Xr vgone 9 . 54.Pp 55The mount's interlock is held while the vnode is inserted. 56For MP-safe file systems, the vnode must be exclusively locked. 57.Pp 58On failure, 59.Fn insmntque 60calls 61.Xr vgone 9 62on the supplied vnode, and then drops the vnode lock and reference. 63If more elaborated cleanup after 64.Fn insmntque 65failure is needed, the 66.Fn insmntque1 67function may be used instead. 68The 69.Fa dtr 70argument is a pointer to a function that is called on failure. 71This function may perform any custom cleanup. 72The vnode pointer is supplied as the first argument to 73.Fa dtr . 74The 75.Fa dtr_arg 76argument is the second, supplying any additional context needed. 77.Sh RETURN VALUES 78The 79.Fn insmntque 80function will always return 0, unless the file system is currently being unmounted 81in which case it may return 82.Dv EBUSY . 83Also, 84.Fn insmntque 85may be forced to insert the vnode into the mount's vnode list 86by setting the 87.Va VV_FORCEINSMQ 88flag in the vnode 89.Va v_flag , 90even if the file system is being unmounted. 91.Sh SEE ALSO 92.Xr vgone 9 93.Sh AUTHORS 94This manual page was written by 95.An Chad David Aq davidc@acns.ab.ca . 96