一步一步粗谈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 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...
随机推荐
- python学习【第七篇】python文件操作
一.文件操作过程 1. 打开文件,得到文件句柄并赋值给一个变量2. 通过句柄对文件进行操作3. 关闭文件 # 1.打开文件,得到文件句柄 f_handle = open('aa.txt', 'r', ...
- 《从零开始学Swift》学习笔记(Day 47)——final关键字
原创文章,欢迎转载.转载请注明:关东升的博客 在类的定义中使用final关键字声明类.属性.方法和下标.final声明的类不能被继承,final声明的属性.方法和下标不能被重写. 下面看一个示例: f ...
- SQL获取某个时间字符串里的月和日,获取某天是周几
select datename(weekday,'2016-11-4') as '周' select convert(varchar,datepart(month,'2016-11-4')) as ' ...
- HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
Hashmap本质是数组加链表.根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面. ConcurrentHashMap:在hashMap的基 ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
(三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...
- Django的admin样式丢失【静态文件收集】
在部署完Django项目后,进行admin后台登录发现样式丢失,后台日志显示:js和css文件丢失 解决办法: 配置settings.py如下: #DEBUG打开时,app的静态文件默认从这里读取 S ...
- 内置函数:max 用法
内置函数——max Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the l ...
- Json模块的详细介绍(序列化)
什么叫序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存在文件里,然 ...
- (4.16)sql server迁移DB文件(同一DB内)
SQL Server 修改数据库物理文件存在位置 关键词:迁移文件,迁移temp库(这怎么迁移呢,用方法2即可,需要重启实例) 三种均需要离线: 一共分为(1)脱机迁移和(2)在线迁移. (1)迁移方 ...
- pgAgent设定定时备份
PostgreSQL定时自动备份 简介 PostgreSQL数据库中未提供数据库的定时备份功能,所以需要结合备份和定时job功能来共同实现. 这里我选取了2种定时job方式,crontab是Linux ...