文件系统类型(file_system_type)定义于 include/linux/fs.h

struct file_system_type用于描述具体文件系统的类型,struct vfsmount用于描述一个文件系统的安装实例。

Linux所支持的文件系统,都会有且仅有一个file_system_type结构(比如,Ext2对应于ext2_fs_type,Ext3对应于ext3_fs_type),而不管它有零个或多个实例安装到系统中。每当一个文件系统被安装时,就会有一个vfsmount结构被创建,它代表该文件系统的一个安装实例,也代表了该文件系统的一个安装点。

不同类型的文件系统通过next字段形成一个链表,同一种文件系统的超级块通过s_instances字段链接到一起,并挂入fs_supers链表中。所有的vfsmount通过mnt_list字段形成一个链表。

struct file_system_type {
    const char *name;
    int fs_flags;
#define FS_REQUIRES_DEV         1 
#define FS_BINARY_MOUNTDATA     2
#define FS_HAS_SUBTYPE          4
#define FS_USERNS_MOUNT         8       
/* Can be mounted by userns root */
#define FS_USERNS_DEV_MOUNT     16 
/* A userns mount does not imply MNT_NODEV */
#define FS_USERNS_VISIBLE       32      
/* FS must already be visible */
#define FS_RENAME_DOES_D_MOVE   32768   
/* FS will handle d_move() during rename() internally. */
    struct dentry *(*mount) (struct file_system_type *, int,
                             const char *, void *);
    void (*kill_sb) (struct super_block *);
    struct module *owner;
    struct file_system_type * next;
    struct hlist_head fs_supers;
    struct lock_class_key s_lock_key;
    struct lock_class_key s_umount_key;
    struct lock_class_key s_vfs_rename_key;
    struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
    struct lock_class_key i_lock_key;
    struct lock_class_key i_mutex_key;
    struct lock_class_key i_mutex_dir_key;
};

挂载点(vfsmount)定义于 include/linux/mount.h

struct vfsmount {
    struct dentry *mnt_root;        /* root of the mounted tree */
    struct super_block *mnt_sb;     /* pointer to superblock */
    int mnt_flags;
};