super_block结构是所有档案系统所共同使用的一个结构,但是,除了共同的部分之外,档案系统之间也有着相当的差异性,因此,为协调此差异性,在super_block结构有一个字段是专门来存放各个档案系统所独自享有的信息。这些信息不用说当然是在呼叫档案系统提供的read_super()时所填入的。在Kernel 2.2.1里,这个字段是这样子的
union {
struct minix_sb_info minix_sb;
struct ext2_sb_info ext2_sb;
…
struct hpfs_sb_info hpfs_sb;
struct hfs_sb_info hfs_sb;
struct adfs_sb_info adfs_sb;
struct qnx4_sb_info qnx4_sb;
void *generic_sbp;
} u;
因为每个super_block在同一时间内最多只会记录一个档案系统的资料,所以,这个字段是union。像ext2_sb就是专门存放ext2档案系统本身所额外需要的信息,由ext2_read_super()函式填入的。