xref: /freebsd/share/man/man9/vfsconf.9 (revision a90b9d0159070121c221b966469c3e36d912bf82)
1.\"
2.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.Dd June 16, 2013
28.Dt VFSCONF 9
29.Os
30.Sh NAME
31.Nm vfsconf
32.Nd "vfs configuration information"
33.Sh SYNOPSIS
34.In sys/param.h
35.In sys/mount.h
36.Ft int
37.Fn vfs_register "struct vfsconf *vfc"
38.Ft int
39.Fn vfs_unregister "struct vfsconf *vfc"
40.Ft int
41.Fn vfs_modevent "module_t mod" "int type" "void *data"
42.Sh DESCRIPTION
43Each file system type known to the kernel has a
44.Vt vfsconf
45structure that contains the
46information required to create a new mount of that file systems type.
47.Bd -literal
48struct vfsconf {
49	struct	vfsops *vfc_vfsops;	/* file system operations vector */
50	char	vfc_name[MFSNAMELEN];	/* file system type name */
51	int	vfc_typenum;		/* historic file system type number */
52	int	vfc_refcount;		/* number mounted of this type */
53	int	vfc_flags;		/* permanent flags */
54	struct	vfsconf *vfc_next;	/* next in list */
55};
56.Ed
57.Pp
58When a new file system is mounted,
59.Xr mount 2
60does a lookup of the
61.Vt vfsconf
62structure by its name, and if it is not already registered,
63attempts to load a kernel module for it.
64The file system operations for the new mount point are taken from
65.Va vfc_vfsops ,
66and
67.Va mnt_vfc
68in the
69.Vt mount
70structure is made to point directly at the
71.Vt vfsconf
72structure for the
73file system type.
74The file system type number is taken from
75.Va vfc_typenum
76which was assigned in
77.Fn vfs_register ,
78and the mount flags are taken from a mask of
79.Va vfc_flags .
80Each time a file system of a given type is mounted,
81.Va vfc_refcount
82is incremented.
83.Pp
84.Fn vfs_register
85takes a new
86.Vt vfsconf
87structure and adds it to the list of existing file systems.
88If the type has not already been registered, it is initialized by calling the
89.Fn vfs_init
90function in the file system operations vector.
91.Fn vfs_register
92also updates the oid's of any sysctl nodes for this file system type
93to be the same as the newly assigned type number.
94.Pp
95.Fn vfs_unregister
96unlinks
97.Fa vfc
98from the list of registered file system types if there are currently no mounted instances.
99If the
100.Fn vfs_uninit
101function in the file systems initialization vector is defined, it is called.
102.Pp
103.Fn vfs_modevent
104is registered by
105.Fn VFS_SET
106to handle the loading and unloading of file system kernel modules.
107In the case of
108.Dv MOD_LOAD ,
109.Fn vfs_register
110is called.
111In the case of
112.Dv MOD_UNLOAD ,
113.Fn vfs_unregister
114is called.
115.Sh RETURN VALUES
116.Fn vfs_register
117returns 0 if successful; otherwise,
118.Er EEXIST
119is returned indicating that the file system type has already been registered.
120.Pp
121.Fn vfs_unregister
122returns 0 if successful.
123If no
124.Vt vfsconf
125entry can be found matching the name in
126.Fa vfc ,
127.Er EINVAL
128is returned.
129If the reference count of mounted instances of the file system type is not zero,
130.Er EBUSY
131is returned.
132If
133.Fn vfs_uninit
134is called, any errors it returns will be returned by
135.Fn vfs_unregister .
136.Pp
137.Fn vfs_modevent
138returns the result of the call to
139.Fn vfs_register
140or
141.Fn vfs_unregister ,
142whatever the case.
143.Sh SEE ALSO
144.Xr mount 2 ,
145.Xr vfs_rootmountalloc 9 ,
146.Xr VFS_SET 9
147.Sh AUTHORS
148This manual page was written by
149.An Chad David Aq Mt davidc@acns.ab.ca .
150