vfsconf - vfs configuration information
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,
vfs_mount9
does a lookup of the
Vt 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
Vt mount
structure is made to point directly at the
Vt 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
Vt 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
Fa 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.
vfs_unregister ();
returns 0 if successful.
If no
Vt vfsconf
entry can be found matching the name in
Fa vfc ,
Er EINVAL
is returned.
If the reference count of mounted instances of the file system type is not zero,
Er EBUSY
is 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.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |