NAME
vfs_hooks,
vfs_hooks_unmount —
VFS hooks interface
SYNOPSIS
#include <sys/param.h>
#include <sys/mount.h>
void
vfs_hooks_unmount(
struct
mount *mp);
DESCRIPTION
The VFS hooks interface provides a way for different kernel subsystems to attach
custom functions to specific VFS operations. This enforces code separation by
keeping the VFS's core sources uncluttered and makes all subsystem
functionality reside in a single place. As an example, this interface is used
by the NFS server code to automatically handle the exports list for each mount
point.
Hooks are described by a
struct vfs_hooks object, as seen
below:
struct vfs_hooks {
int (*vh_unmount)(struct mount *);
};
For simplicity, each field is named after the VFS operation it refers to. The
purpose of each member function, alongside some important notes, is shown
below:
-
-
- vh_unmount(mp)
- This hook is executed during the unmount process of a file
system.
For more information about the purpose of each operation, see
vfsops(9). Note that any of
these fields may be a null pointer.
After the definition of a
struct vfs_hooks object, the
kernel has to add it to the
vfs_hooks link set using the
VFS_HOOKS_ATTACH(
struct vfs_hooks *)
macro.
Please note that this interface is incomplete on purpose to keep it in its
smallest possible size (i.e., do not provide a hook that is not used). If you
feel the need to hook a routine to a VFS operation that is not yet supported
by this interface, just add it to the files described in
CODE REFERENCES.
FUNCTIONS
The following functions are provided to the VFS code to run the hooked
functions:
-
-
- vfs_hooks_unmount(mp)
- Runs all hooks for the VFS unmount operation. Given that
these operations shall not fail, it returns
void.
CODE REFERENCES
The VFS hooks interface is implemented within the files
sys/kern/vfs_hooks.c and
sys/sys/mount.h.
SEE ALSO
intro(9),
vfs(9),
vfsops(9)
HISTORY
The VFS hooks interface appeared in
NetBSD 4.0.