xref: /freebsd/share/man/man9/insmntque.9 (revision e87ec409fa9b21abf79895837fe375ab3d7e408a)
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 January 29, 2022
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"
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 indirect mount reference count, maintained as the count of the
52vnodes owned by it, is incremented for each vnode added to the
53mount, and that reference is decremented by
54.Xr vgone 9 .
55.Pp
56The mount's interlock is held while the vnode is inserted.
57The vnode must be exclusively locked.
58.Pp
59On failure,
60.Fn insmntque
61resets vnode' operation vector to the vector of
62.Xr deadfs 9 ,
63clears
64.Va v_data ,
65and then calls
66.Xr vgone 9
67and
68.Xr vput 9 .
69If more elaborated cleanup after
70.Fn insmntque
71failure is needed, the
72.Fn insmntque1
73function may be used instead.
74It does not do any cleanup following a failure, leaving all
75the work to the caller.
76In particular, the operation vector
77.Va v_op
78and
79.Va v_data
80fields of the vnode are kept intact.
81.Sh RETURN VALUES
82The
83.Fn insmntque
84function will always return 0, unless the file system is currently being unmounted
85in which case it may return
86.Dv EBUSY .
87Also,
88.Fn insmntque
89may be forced to insert the vnode into the mount's vnode list
90by setting the
91.Va VV_FORCEINSMQ
92flag in the vnode
93.Va v_flag ,
94even if the file system is being unmounted.
95.Sh SEE ALSO
96.Xr vgone 9
97.Sh AUTHORS
98This manual page was written by
99.An Chad David Aq Mt davidc@acns.ab.ca .
100