mount过程分析之一(基于3.16.3内核)

一直想写有些关于文件系统的博文,但是由于近一年来实在太忙,所以没有时间写。前几日赶上放国庆节假期,回来后又正好处在RHEL-6.6刚发布,RHEL-7.1还没有开始繁重工作的阶段,所以抽出一些时间准备写一些东西。不知道是否能坚持长久,可能在忙起来后会拖后进度吧。反正也不着急,慢慢写。

既然要分析就要选择一个确定的linux版本进行说明,目前最新的linux稳定版是3.16.3,就选这个内核了。之后的文章都以这个版本为基础。


研究linux fs的入手点应该是哪呢?可能仁者见仁,智者见智。我一直以来也都是零零散散的翻阅着有关super block, inode, dentry, file等等内容的各种代码和资料,但是知识始终是散乱的,无法拼凑成完整的体系。现在我要试图整理顺一个整套的文件系统知识,我决定从file_system_type入手。

本文是要尽力将我已经掌握的分块的知识串连起来,所以至少了解linux vfs的几个结构是必须的,super_block, inode, dentry, file等。

在include/linux/fs.h里定义着几个基本数据结构——block_device, file_system_type, inode和file。其中block_device一般和块设备操作,如硬盘、分区等有关,文件系统的操作多半都会反映到硬盘等块设备上的操作,如读取super block、读写数据等,所以block_device掌管着文件系统的底层设备。由于我们从file_system_type开始研究,所以这里先不管block_device。

来看file_system_type的结构:

struct file_system_type {
        const char *name;
        int fs_flags;
#define FS_REQUIRES_DEV         1
#define FS_BINARY_MOUNTDATA     2
#define FS_HAS_SUBTYPE          4
#define FS_USERNS_MOUNT         8       /* Can be mounted by userns root */
#define FS_USERNS_DEV_MOUNT     16 /* A userns mount does not imply 
  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值