Linux 内核文件系统与设备操作流程分析(32) // return get_sb_bdev(fs_type, flags, dev_name, data, ext3_fill_super, mnt);}了解了以上结构我们再来看 ext3_fill_super() 函数的具体实现,这个函数的第一个参数即是一个超级块(super block)结构。在此函数中将上面提到的 ext3 超级块(super block) 函数集 ext3_sops 赋给了此结构。然后调用 iget() 函数触发超级块(super block) 函数集。static int ext3_fill_super (struct super_block *sb, void *data, int silent){ // // 篇幅所限,在这个函数中我们只列出相关代码。 // // // 设置超级块的函数集 // sb->s_op = &ext3_sops; sb->s_eXPort_op = &ext3_export_ops; sb->s_xattr = ext3_xattr_handlers;#ifdef CONFIG_QUOTA sb->s_qcop = &ext3_qctl_operations; sb->dq_op = &ext3_quota_operations;#endif INIT_LIST_HEAD(&sbi->s_orphan); /* unlinked but open files */ sb->s_root = NULL; // // 调用 iget() 函数得到相应的 inode。 // root = iget(sb, EXT3_ROOT_INO); // // 根据得到的根 inode 分配超级块(super block)中的 // s_root 此字段是一个 struct dentry 结构。 //