UFS is implemented as a loadable file system module containing instances of the vfs and vnode objects. The UFS vnode interfaces implement file operations, and the UFS vfs interfaces implement file system administration.
The UFS file system implementation can be divided into five major components:
An instance of the vfs object and methods for mounting and unmounting a file system and gathering file system statistics
An implementation of the vnode methods for file operations
A directory implementation that uses the standard directory name lookup cache
A block map algorithm to map files to disk blocks on the storage device
An inode cache to keep vnodes in memory after they are no longer referenced
Figure 14.7 shows the relationship ...