一步一步粗谈linux文件系统(三)----超级块(superblock)【转】
本文转载自: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)【转】的更多相关文章
- 81 dumpe2fs-打印“ext2/ext3”文件系统的超级块和快组信息
dumpe2fs打印"ext2/ext3"文件系统的超级块和快组信息. 语法 dumpe2fs (选项) (参数) 选项 -b:打印文件系统中预留的块信息: -ob<超级块& ...
- linux 重定向类型 超级块 i节点
超级块:定义文件系统的元数据(总大小.块大小.空闲.......):在格式化的时候确定 查看超级块信息:tune2fs -l 目录 i节点:定义文件的元数据(名称.大小.存放位置.权限.修改时间 ...
- 浅谈Linux文件系统
Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.使用命令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败. Lin ...
- Linux 文件系统剖析
[转自]https://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 按照分层结构讨论 Linux 文件系统 在文件系统方面,Linu ...
- Linux 文件系统及 ext2 文件系统
linux 支持的文件系统类型 Ext2: 有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3: Ext2 的加强版,添加了日志 ...
- linux操作系统故障处理-ext4文件系统超级块损坏修复
linux操作系统故障处理-ext4文件系统超级块损坏修复 背景 前天外面出差大数据测试环境平台有7台服务器挂了,同事重启好了五台服务器,但是还有两台服务器启动不起来,第二天回来后我和同事再次去机 ...
- linux文件系统体系结构 和 虚拟文件系统(VFS)
图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...
- Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file
转自:http://blog.csdn.net/shanshanpt/article/details/38943731 http://elixir.free-electrons.com/linux/v ...
- Linux 文件系统相关的基本概念
本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...
随机推荐
- echarts Y轴刻度保留几位小数
yAxis: [ { type: 'value', name: '雨量(mm)', nameLocation: 'start', inverse: true, axisLabel: { ...
- js 数组容易弄混的那些方法
js数组中 我们很多数组的方法都知道其中的含义 但是每一次用的都不是很顺手 下边我给大家写了一个小小的demo 来理解那些 近似”双胞胎“的东西 // splice方法 var a=[1,2,3,4, ...
- Hibernate-缓存/懒加载/抓取策略
懒加载测试: /*类的延迟加载 * * session.get * 1.方法加载出来的对象是class对象 * 2.在session.get方法执行的时候发出sql语句 * 3.class对象是有值的 ...
- Android Studio中debug和release模式默认的参数配置
The possible properties and their default values are: debuggable:表示是否可以在手机上调试程序. 在Eclipse中,只有android ...
- Ninject学习笔记<三>
ASP.NET MVC学前篇之Ninject的初步了解 1.介绍 废话几句,Ninject是一种轻量级的.基础.NET的一个开源IoC框架,在对于MVC框架的学习中会用到IoC框架的,因为这种IoC开 ...
- 【BZOJ2762】[JLOI2011]不等式组 树状数组
[BZOJ2762][JLOI2011]不等式组 Description 旺汪与旺喵最近在做一些不等式的练习.这些不等式都是形如ax+b>c 的一元不等式.当然,解这些不等式对旺汪来说太简单了, ...
- Object类有哪些公用方法?
Object是所有类的父类,任何类都默认继承Object. clone 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedExce ...
- java 对list 排序
Comparable用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: /*** 根据order对User排序*/public ...
- Jquery的each遍历数据组成JSON
遍历每个标签的值 html代码: <volist name="parArr" id="item" key="$key"> ...
- 数据性能调校——查看最耗资源的各种SQL
从计划高速缓存中清除查询计划 DBCC FREEPROCCACHE 清除缓存中的过程 DBCC DROPCLEANBUFFERS清除内存中的数据 SELECT DB_ID('你的数据库名') tota ...