The Linux community named their filesystem architecture the Virtual File System Switch, or Linux VFS which is a little of a misnomer because it was substantially different from the Sun VFS/vnode architecture and the SVR4 VFS architecture that preceded it. However, as with all POSIX-compliant, UNIX-like operating systems, there are many similarities between Linux and other UNIX variants.
The following sections describe the earlier implementations of Linux prior to the 2.4 kernel released, generally around the 1.2 timeframe. Later on, the differences introduced with the 2.4 kernel are highlighted with a particular emphasis on the style of I/O, which changed substantially.
For further details on the earlier Linux kernels see [BECK96]. For details on Linux filesystems, [BAR01] contains information about the filesystem architecture as well as details about some of the newer filesystem types supported on Linux.
The main structures used in construction of the Linux VFS are shown in Figure 8.4 and are described in detail below.
Linux processes are defined by the task_struct structure, which contains information used for filesystem-related operations as well as the list of open file descriptors. The file-related fields are as follows:
unsigned short umask; struct inode *root; struct inode *pwd;
The umask field is used in response to calls to set the umask. The root and pwd fields hold the root and current working ...