The Sun VFS/Vnode Architecture
Developed on Sun Microsystem's SunOS operating system, the world first came to know about vnodes through Steve Kleiman's often-quoted Usenix paper “Vnodes: An Architecture for Multiple File System Types in Sun UNIX” [KLEI86]. The paper stated four design goals for the new filesystem architecture:
- The filesystem implementation should be clearly split into a filesystem independent and filesystem-dependent layer. The interface between the two should be well defined.
- It should support local disk filesystems such as the 4.2BSD Fast File System (FSS), non-UNIX like filesystems such as MS-DOS, stateless filesystems such as NFS, and stateful filesystems such as RFS.
- It should be able to support the server side of remote filesystems such as NFS and RFS.
- Filesystem operations across the interface should be atomic such that several operations do not need to be encompassed by locks.
One of the major implementation goals was to remove the need for global data, allowing the interfaces to be re-entrant. Thus, the previous style of storing filesystem-related data in the user area, such as u_base and u_count, needed to be removed. The setting of u_error on error also needed removing and the new interfaces should explicitly return an error value.
The main components of the Sun VFS architecture are shown in Figure 7.2. These components will be described throughout the following sections.
The architecture actually has two sets of interfaces between the filesystem-independent ...