本文转载自:https://blog.csdn.net/fenglifeng1987/article/details/8302921

超级块是来描述整个文件系统信息的,可以说是一个全局的数据结构,可以把它理解成文件系统的心脏

比较简单的文件系统中(如ramfs和sysfs),超级块的初始化大致分三步:

1、sget

2、fill_super

3、simple_set_mnt

sget:

/**

*        sget        -        findor create a superblock

*        @type:        filesystemtype superblock should belong to

*        @test:        comparisoncallback

*        @set:        setupcallback

*        @data:        argumentto each of them

*/

struct super_block*sget(struct file_system_type*type,                //得到一个超级快superblock

int(*test)(struct super_block *,void *),

int(*set)(struct super_block *,void *),

void*data)

这个函数的意思其实很简单明了,就是为超级块alloc一块空间出来,并有主流的初始化操作。

fill_super:

这个各个文件系统有着自己的填充函数,but万变不离其中的是,sb->s_op,sb->s_root(dentry),还有一个inode。其中inode中又会有各个系统特有的操作,i_fop,i_op,i_mapping。这个文件系统第一个inode,dentry,后续的很多操作都是基于这一步开始的。linux万物皆文件,文件皆目录(dentry),目录指节点(inode),其实很多操作皆出自inode,切记切记。

将文件系统中的操作大致赋值定型,个人觉得,如果要深入了解某个文件系统的话,这部分过程得用笔记记下来,然后接下来调用操作的时候,能一目了然。这部分真的很重要的。

simple_set_mnt:

intsimple_set_mnt(struct vfsmount *mnt, struct super_block *sb)

{

mnt->mnt_sb= sb;

mnt->mnt_root= dget(sb->s_root);

return0;

}

这部分很简单,因为最终需要返回的是mnt,而非sb,所以要将sb挂到mnt上。

一步一步粗谈linux文件系统(三)----超级块(superblock)【转】的更多相关文章

  1. 81 dumpe2fs-打印“ext2/ext3”文件系统的超级块和快组信息

    dumpe2fs打印"ext2/ext3"文件系统的超级块和快组信息. 语法 dumpe2fs (选项) (参数) 选项 -b:打印文件系统中预留的块信息: -ob<超级块& ...

  2. linux 重定向类型 超级块 i节点

    超级块:定义文件系统的元数据(总大小.块大小.空闲.......):在格式化的时候确定 查看超级块信息:tune2fs  -l   目录 i节点:定义文件的元数据(名称.大小.存放位置.权限.修改时间 ...

  3. 浅谈Linux文件系统

    Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.使用命令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败. Lin ...

  4. Linux 文件系统剖析

    [转自]https://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 按照分层结构讨论 Linux 文件系统 在文件系统方面,Linu ...

  5. Linux 文件系统及 ext2 文件系统

      linux 支持的文件系统类型 Ext2:     有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3:     Ext2 的加强版,添加了日志 ...

  6. linux操作系统故障处理-ext4文件系统超级块损坏修复

    linux操作系统故障处理-ext4文件系统超级块损坏修复   背景 前天外面出差大数据测试环境平台有7台服务器挂了,同事重启好了五台服务器,但是还有两台服务器启动不起来,第二天回来后我和同事再次去机 ...

  7. linux文件系统体系结构 和 虚拟文件系统(VFS)

    图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...

  8. Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file

    转自:http://blog.csdn.net/shanshanpt/article/details/38943731 http://elixir.free-electrons.com/linux/v ...

  9. Linux 文件系统相关的基本概念

    本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...

随机推荐

  1. linux下的shell 快捷键

    Ctrl+p重复上一次命令Ctrl+a跳到第一个字符前Ctrl+x同上但再按一次会从新回到原位置Ctrl+b前移一个字符不删除字符情况下Ctrl+h删除前一个字符Ctrl+u删除提示符前的所有字符Ct ...

  2. LeetCode具体分析 :: Recover Binary Search Tree [Tree]

    Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straigh ...

  3. iOS-ASIHTTPRequest框架学习

    本文转载至 http://www.cnblogs.com/A-Long-Way-Chris/p/3539679.html 前段时间在公司的产品中支持了够快网盘,用于云盘存储. 在这个过程中,学习到了很 ...

  4. (int)()和int()强制类型转换

    (int)()这个是c语言的强制转换,众所知周 int(),这种理解靠谱点 Class A { A(int i){} } 调用int类型的构造函数然后转换的 其实都可以转换.

  5. 学习 NGINX

    At a high level, configuring NGINX Plus as a web server is a matter of defining which URLs it handle ...

  6. Adjacency List

    w Python Patterns - Implementing Graphs | Python.orghttps://www.python.org/doc/essays/graphs/ Graph ...

  7. Man-in-the-middle attack

    w https://en.wikipedia.org/wiki/Man-in-the-middle_attack https://zh.wikipedia.org/wiki/中间人攻击 需要通过一个安 ...

  8. 操作系统/应用程序、操作中的“并发”、线程和进程,python中线程和进程(GIL锁),python线程编写+锁

    并发编程前言: 1.网络应用 1)爬虫 直接应用并发编程: 2)网络框架 django flask tornado 源码-并发编程 3)socketserver 源码-并发编程 2.运维领域 1)自动 ...

  9. mysql大致学习路径

  10. BADI:LE_SHP_DELIVERY_PROC-增强在交货处理中

    1.所得方法清单: CHANGE_FCODE_ATTRIBUTES Control Activation of Function CodesCHANGE_FIELD_ATTRIBUTES Contro ...