Ext2文件系统写数据流程及代码分析

完成了创建文件流程的介绍,下面就是向文件写数据了。今天我们主要介绍一些Ext2文件系统写数据的主要流程及核心代码。

为了便于理解Ext2文件系统写数据的流程,本文先从整个Linux文件系统的角度分析一下写数据的流程,因此本文包含了部分VFS内容介绍。本文主要包含2部分内容,一部分是从总体上介绍一个写流程是如何从用户态接口到Ext2文件系统的,另一部分是Ext2文件的数据在磁盘上组织及函数流程

写文件的操作通常由用户态的程序发起,比如在开发的过程中调用系统API(write)。如图是从用户态发起一直到调用Ext2函数的整个调用流程。从用户态到内核态是触发了一个中断,这里我们不关心其具体实现,其作用是触发对内核函数的调用。最开始的内核函数是VFS的函数,VFS是一个中间抽象层,其目的是为用户提供统一的接口,屏蔽不同文件系统间的差异。VFS会调用具体文件系统的函数,对于本文基于的内核版本(5.2)调用是Ext2的ext2_file_write_iter函数。在老版本的Linux内核当中调用的是虚拟文件系统的公共函数generic_perform_write。

图1 整体调用流程

 

能够调用该文件系统的接口是因为inode在初始化的时候填充了该文件系统的一个文件操作的结构体实现,关于具体细节本文不做解释,后续再另起文详述。

Ext2文件系统文件操作结构体实现如代码所示,这里包含了Ext2文件系统实现的可以对文件进行的操作。包括对文件内容的读写、查找和缓存同步等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据存储张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值