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