“A superblock object represents a mounted filesystem.”
Super Block是一个文件系统的具体实现,在挂载filesystem时,会创建出这个filesystem对应super block的instance。每个filesystem有其对应的super block实现。
基于block device的filesystem,super block保存在磁盘头的固定sector中。
基于memory的pseudo filesystem,super block在挂载时创建并保存在内存中。
整个VFS都是基于OO思想设计,以C语言实现的。框架定义基类及接口,FS继承并实现子类。
由于C语言没有真正的Class,在实现时采用operations pointer + struct object的方式,来当作类method。
VFS中定义的各种基本struct和struct中定义的operation,就是这些Class的C语言实现。
- /fs/super.c // Super base class and framework
- /fs/libfs.c // Generic filesystem operations implementation (各文件系统可能复用的operation通用实现)
super_block
- super_operations
alloc_inode // Alloc inode
free_inode // Free inode
dirty_inode // Called when inode is modified
write_inode // Write inode to disk
delete_inode // Delete inode from disk
put_super // Called when unmount
write_super // Write super block to disk
statfs // Get filesystem statistics
remount_fs // Called when remount
show_options // Display mount options in /proc/mounts