| VFS_HOOKS(9) | Kernel Developer's Manual | VFS_HOOKS(9) |
vfs_hooks,
vfs_hooks_unmount — VFS
hooks interface
#include
<sys/param.h>
#include <sys/mount.h>
void
vfs_hooks_unmount(struct
mount *mp);
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)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.
The following functions are provided to the VFS code to run the hooked functions:
vfs_hooks_unmount(mp)The VFS hooks interface is implemented within the files sys/kern/vfs_hooks.c and sys/sys/mount.h.
The VFS hooks interface appeared in NetBSD 4.0.
| September 23, 2005 | NetBSD 11.0 |