xref: /freebsd/share/man/man9/vfsconf.9 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
1ffc0b97fSAlfred Perlstein.\"
2ffc0b97fSAlfred Perlstein.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
3ffc0b97fSAlfred Perlstein.\"
4ffc0b97fSAlfred Perlstein.\" Redistribution and use in source and binary forms, with or without
5ffc0b97fSAlfred Perlstein.\" modification, are permitted provided that the following conditions
6ffc0b97fSAlfred Perlstein.\" are met:
7ffc0b97fSAlfred Perlstein.\" 1. Redistributions of source code must retain the above copyright
8ffc0b97fSAlfred Perlstein.\"    notice(s), this list of conditions and the following disclaimer as
9ffc0b97fSAlfred Perlstein.\"    the first lines of this file unmodified other than the possible
10ffc0b97fSAlfred Perlstein.\"    addition of one or more copyright notices.
11ffc0b97fSAlfred Perlstein.\" 2. Redistributions in binary form must reproduce the above copyright
12ffc0b97fSAlfred Perlstein.\"    notice(s), this list of conditions and the following disclaimer in the
13ffc0b97fSAlfred Perlstein.\"    documentation and/or other materials provided with the distribution.
14ffc0b97fSAlfred Perlstein.\"
15ffc0b97fSAlfred Perlstein.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
16ffc0b97fSAlfred Perlstein.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17ffc0b97fSAlfred Perlstein.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18ffc0b97fSAlfred Perlstein.\" DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
19ffc0b97fSAlfred Perlstein.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20ffc0b97fSAlfred Perlstein.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21ffc0b97fSAlfred Perlstein.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22ffc0b97fSAlfred Perlstein.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23ffc0b97fSAlfred Perlstein.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24ffc0b97fSAlfred Perlstein.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
25ffc0b97fSAlfred Perlstein.\" DAMAGE.
26ffc0b97fSAlfred Perlstein.\"
2740670f19SXin LI.Dd June 16, 2013
28ffc0b97fSAlfred Perlstein.Dt VFSCONF 9
29ffc0b97fSAlfred Perlstein.Os
30ffc0b97fSAlfred Perlstein.Sh NAME
31ffc0b97fSAlfred Perlstein.Nm vfsconf
32ffc0b97fSAlfred Perlstein.Nd "vfs configuration information"
33ffc0b97fSAlfred Perlstein.Sh SYNOPSIS
34ffc0b97fSAlfred Perlstein.In sys/param.h
35ffc0b97fSAlfred Perlstein.In sys/mount.h
36ffc0b97fSAlfred Perlstein.Ft int
37ffc0b97fSAlfred Perlstein.Fn vfs_register "struct vfsconf *vfc"
38ffc0b97fSAlfred Perlstein.Ft int
39ffc0b97fSAlfred Perlstein.Fn vfs_unregister "struct vfsconf *vfc"
40ffc0b97fSAlfred Perlstein.Ft int
41ffc0b97fSAlfred Perlstein.Fn vfs_modevent "module_t mod" "int type" "void *data"
42ffc0b97fSAlfred Perlstein.Sh DESCRIPTION
431f620c2eSRuslan ErmilovEach file system type known to the kernel has a
441f620c2eSRuslan Ermilov.Vt vfsconf
451f620c2eSRuslan Ermilovstructure that contains the
46ffc0b97fSAlfred Perlsteininformation required to create a new mount of that file systems type.
47ffc0b97fSAlfred Perlstein.Bd -literal
48ffc0b97fSAlfred Perlsteinstruct vfsconf {
49ffc0b97fSAlfred Perlstein	struct	vfsops *vfc_vfsops;	/* file system operations vector */
50ffc0b97fSAlfred Perlstein	char	vfc_name[MFSNAMELEN];	/* file system type name */
51ffc0b97fSAlfred Perlstein	int	vfc_typenum;		/* historic file system type number */
52ffc0b97fSAlfred Perlstein	int	vfc_refcount;		/* number mounted of this type */
53ffc0b97fSAlfred Perlstein	int	vfc_flags;		/* permanent flags */
54ffc0b97fSAlfred Perlstein	struct	vfsconf *vfc_next;	/* next in list */
55ffc0b97fSAlfred Perlstein};
56ffc0b97fSAlfred Perlstein.Ed
571f620c2eSRuslan Ermilov.Pp
581f620c2eSRuslan ErmilovWhen a new file system is mounted,
5940670f19SXin LI.Xr mount 2
601f620c2eSRuslan Ermilovdoes a lookup of the
611f620c2eSRuslan Ermilov.Vt vfsconf
621f620c2eSRuslan Ermilovstructure by its name, and if it is not already registered,
63ffc0b97fSAlfred Perlsteinattempts to load a kernel module for it.
641f620c2eSRuslan ErmilovThe file system operations for the new mount point are taken from
651f620c2eSRuslan Ermilov.Va vfc_vfsops ,
661f620c2eSRuslan Ermilovand
671f620c2eSRuslan Ermilov.Va mnt_vfc
681f620c2eSRuslan Ermilovin the
691f620c2eSRuslan Ermilov.Vt mount
701f620c2eSRuslan Ermilovstructure is made to point directly at the
711f620c2eSRuslan Ermilov.Vt vfsconf
721f620c2eSRuslan Ermilovstructure for the
73ffc0b97fSAlfred Perlsteinfile system type.
741f620c2eSRuslan ErmilovThe file system type number is taken from
751f620c2eSRuslan Ermilov.Va vfc_typenum
761f620c2eSRuslan Ermilovwhich was assigned in
77ffc0b97fSAlfred Perlstein.Fn vfs_register ,
781f620c2eSRuslan Ermilovand the mount flags are taken from a mask of
791f620c2eSRuslan Ermilov.Va vfc_flags .
801f620c2eSRuslan ErmilovEach time a file system of a given type is mounted,
811f620c2eSRuslan Ermilov.Va vfc_refcount
821f620c2eSRuslan Ermilovis incremented.
83ffc0b97fSAlfred Perlstein.Pp
84ffc0b97fSAlfred Perlstein.Fn vfs_register
851f620c2eSRuslan Ermilovtakes a new
861f620c2eSRuslan Ermilov.Vt vfsconf
871f620c2eSRuslan Ermilovstructure and adds it to the list of existing file systems.
881f620c2eSRuslan ErmilovIf the type has not already been registered, it is initialized by calling the
89ffc0b97fSAlfred Perlstein.Fn vfs_init
90ffc0b97fSAlfred Perlsteinfunction in the file system operations vector.
91ffc0b97fSAlfred Perlstein.Fn vfs_register
92ffc0b97fSAlfred Perlsteinalso updates the oid's of any sysctl nodes for this file system type
93ffc0b97fSAlfred Perlsteinto be the same as the newly assigned type number.
94ffc0b97fSAlfred Perlstein.Pp
95ffc0b97fSAlfred Perlstein.Fn vfs_unregister
96ffc0b97fSAlfred Perlsteinunlinks
97ffc0b97fSAlfred Perlstein.Fa vfc
98ffc0b97fSAlfred Perlsteinfrom the list of registered file system types if there are currently no mounted instances.
99ffc0b97fSAlfred PerlsteinIf the
100ffc0b97fSAlfred Perlstein.Fn vfs_uninit
1011f620c2eSRuslan Ermilovfunction in the file systems initialization vector is defined, it is called.
102ffc0b97fSAlfred Perlstein.Pp
103ffc0b97fSAlfred Perlstein.Fn vfs_modevent
104ffc0b97fSAlfred Perlsteinis registered by
105ffc0b97fSAlfred Perlstein.Fn VFS_SET
106ffc0b97fSAlfred Perlsteinto handle the loading and unloading of file system kernel modules.
107ffc0b97fSAlfred PerlsteinIn the case of
1081f620c2eSRuslan Ermilov.Dv MOD_LOAD ,
109ffc0b97fSAlfred Perlstein.Fn vfs_register
110ffc0b97fSAlfred Perlsteinis called.
111ffc0b97fSAlfred PerlsteinIn the case of
1121f620c2eSRuslan Ermilov.Dv MOD_UNLOAD ,
113ffc0b97fSAlfred Perlstein.Fn vfs_unregister
114ffc0b97fSAlfred Perlsteinis called.
115ffc0b97fSAlfred Perlstein.Sh RETURN VALUES
116ffc0b97fSAlfred Perlstein.Fn vfs_register
117ffc0b97fSAlfred Perlsteinreturns 0 if successful; otherwise,
1181f620c2eSRuslan Ermilov.Er EEXIST
119ffc0b97fSAlfred Perlsteinis returned indicating that the file system type has already been registered.
120ffc0b97fSAlfred Perlstein.Pp
121ffc0b97fSAlfred Perlstein.Fn vfs_unregister
122ffc0b97fSAlfred Perlsteinreturns 0 if successful.
1231f620c2eSRuslan ErmilovIf no
1241f620c2eSRuslan Ermilov.Vt vfsconf
1251f620c2eSRuslan Ermiloventry can be found matching the name in
126ffc0b97fSAlfred Perlstein.Fa vfc ,
1271f620c2eSRuslan Ermilov.Er EINVAL
128ffc0b97fSAlfred Perlsteinis returned.
1291f620c2eSRuslan ErmilovIf the reference count of mounted instances of the file system type is not zero,
1301f620c2eSRuslan Ermilov.Er EBUSY
131ffc0b97fSAlfred Perlsteinis returned.
132ffc0b97fSAlfred PerlsteinIf
133ffc0b97fSAlfred Perlstein.Fn vfs_uninit
1341f620c2eSRuslan Ermilovis called, any errors it returns will be returned by
135ffc0b97fSAlfred Perlstein.Fn vfs_unregister .
136ffc0b97fSAlfred Perlstein.Pp
137ffc0b97fSAlfred Perlstein.Fn vfs_modevent
138ffc0b97fSAlfred Perlsteinreturns the result of the call to
139ffc0b97fSAlfred Perlstein.Fn vfs_register
140ffc0b97fSAlfred Perlsteinor
1411f620c2eSRuslan Ermilov.Fn vfs_unregister ,
142ffc0b97fSAlfred Perlsteinwhatever the case.
143ffc0b97fSAlfred Perlstein.Sh SEE ALSO
14440670f19SXin LI.Xr mount 2 ,
145ffc0b97fSAlfred Perlstein.Xr vfs_rootmountalloc 9 ,
146ffc0b97fSAlfred Perlstein.Xr VFS_SET 9
147ffc0b97fSAlfred Perlstein.Sh AUTHORS
148571dba6eSHiten PandyaThis manual page was written by
149*8a7314fcSBaptiste Daroussin.An Chad David Aq Mt davidc@acns.ab.ca .
150