17.5. Ext2 Methods
Many of the VFS methods described in Chapter 12 have a corresponding Ext2 implementation. Since it would take a whole book to describe all of them, we'll limit ourselves to briefly reviewing the methods implemented in Ext2. Once the disk and the memory data structures are clearly understood, the reader should be able to follow the code of the Ext2 functions that implement them.
17.5.1. Ext2 Superblock Operations
All VFS superblock operations have a specific implementation in Ext2, with the exception of the clear_inode and umount_begin VFS methods. The addresses of the superblock methods are stored into the ext2_sops array of pointers.
17.5.2. Ext2 Inode Operations
Many of the VFS inode operations have a specific implementation in Ext2, which depends on the type of the file to which the inode refers. Table 17-8 illustrates the inode operations implemented for inodes that refer to regular and directory files; their addresses are stored in the ext2_file_inode_operations and in the ext2_dir_inode_operations tables, respectively. Recall that the VFS uses its own generic functions when the corresponding Ext2 method is undefined (NULL pointer).
| VFS Inode Operation | Ext2 File Inode Method | Ext2 Directory Inode Method |
|---|---|---|
| lookup | NULL | ext2_lookup( ) |
| link | NULL | ext2_link( ) |
| unlink | NULL | ext2_unlink( ) |
| symlink | NULL | ext2_symlink( ) |
| mkdir | NULL | ext2_mkdir( ) |
| rmdir | NULL | ext2_rmdir( ) |
| create | NULL | ext2_create( ) |