FreeBSD manual

download PDF document: vfs_register.9.pdf

VFSCONF(9) FreeBSD Kernel Developer's Manual VFSCONF(9)
NAME vfsconf - vfs configuration information
SYNOPSIS #include <sys/param.h> #include <sys/mount.h>
int vfs_register(struct vfsconf *vfc);
int vfs_unregister(struct vfsconf *vfc);
int vfs_modevent(module_t mod, int type, void *data);
DESCRIPTION Each file system type known to the kernel has a vfsconf structure that contains the information required to create a new mount of that file systems type.
struct vfsconf { struct vfsops *vfc_vfsops; /* file system operations vector */ char vfc_name[MFSNAMELEN]; /* file system type name */ int vfc_typenum; /* historic file system type number */ int vfc_refcount; /* number mounted of this type */ int vfc_flags; /* permanent flags */ struct vfsconf *vfc_next; /* next in list */ };
When a new file system is mounted, mount(2) does a lookup of the vfsconf structure by its name, and if it is not already registered, attempts to load a kernel module for it. The file system operations for the new mount point are taken from vfc_vfsops, and mnt_vfc in the mount structure is made to point directly at the vfsconf structure for the file system type. The file system type number is taken from vfc_typenum which was assigned in vfs_register(), and the mount flags are taken from a mask of vfc_flags. Each time a file system of a given type is mounted, vfc_refcount is incremented.
vfs_register() takes a new vfsconf structure and adds it to the list of existing file systems. If the type has not already been registered, it is initialized by calling the vfs_init() function in the file system operations vector. vfs_register() also updates the oid's of any sysctl nodes for this file system type to be the same as the newly assigned type number.
vfs_unregister() unlinks vfc from the list of registered file system types if there are currently no mounted instances. If the vfs_uninit() function in the file systems initialization vector is defined, it is called.
vfs_modevent() is registered by VFS_SET() to handle the loading and unloading of file system kernel modules. In the case of MOD_LOAD, vfs_register() is called. In the case of MOD_UNLOAD, vfs_unregister() is called.
returned. If vfs_uninit() is called, any errors it returns will be returned by vfs_unregister().
vfs_modevent() returns the result of the call to vfs_register() or vfs_unregister(), whatever the case.
SEE ALSO mount(2), vfs_rootmountalloc(9), VFS_SET(9)
AUTHORS This manual page was written by Chad David <davidc@acns.ab.ca>.
FreeBSD 14.0-RELEASE-p11 June 16, 2013 FreeBSD 14.0-RELEASE-p11