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