系统里存在一个全局变量,是一个指针,用来指向所有当前系统加载的文件系统类型。需要注意的是系统不会再分配任何内存空间,而是使用所有已经存在的全局变量,只是使用这个指针和file_system_type里的next指针,将所有的文件系统类型串联起来。
static struct file_system_type *file_systems;
static DEFINE_RWLOCK(file_systems_lock);
fs/filesystems.c
这个文件下提供了对这个全局变量的操作接口。
find_filesystem,寻找到当前列表的最有一个元素的next指针。
register_filesystem, 将文件系统类型加到列表里,加到末尾。需要注意如果已经存在会返回res = -EBUSY;,这里看着需要改一下。不过不改也没关系。
其中一个元素,也是一个全局变量:
static struct file_system_type bd_type = {
.name = “bdev”,
.init_fs_context = bd_init_fs_context,
.kill_sb = kill_anon_super,
};
qa:root/proc:
#more filesystems
nodev sysfs
nodev tmpfs
nodev bdev 、、、、 here
nodev proc
nodev cgroup
nodev cgroup2
nodev cpuset
nodev devtmpfs
nodev configfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev ramfs
nodev hugetlbfs
nodev devpts
nodev autofs
nodev pstore
nodev mqueue
nodev selinuxfs
fuseblk
nodev fuse
nodev fusectl
ext3
ext2
ext4
nodev binfmt_misc
iso9660