前文我们知道在Linux操作系统中文件是由inode标识的,每个文件在磁盘上都有一个inode节点。对于Ext2文件系统来说,通常这些inode节点会相对集中的放在一个区域,这个区域叫做inode表。

图1 inode位图与inode表
同时,在前文中我们了解了Ext2的目录是如何组织数据,并且了解了目录与文件及文件数据的组织关系。本文我们将介绍Ext2文件系统创建一个文件的流程及关键代码。
创建普通文件
创建文件的操作通常是由用户态发起,通过虚拟文件系统中的vfs_create函数调用具体文件系统的create函数完成具体工作,本文自然就是Ext2文件系统的ext2_create函数。该函数的流程图如图2所示。

图2 创建文件主流程
函数ext2_new_inode用于创建内存中的inode节点,并且根据Ext2的inode位图查找可用的inode表项。最后完成基本的初始化工作。
本文详细介绍了Ext2文件系统创建文件的流程,包括创建普通文件、软硬链接及目录。通过分析关键函数,如ext2_new_inode、ext2_add_nondir,揭示了Ext2如何使用inode位图查找和标记inode,以及如何在目录数据中添加目录项。同时,讨论了软链接和硬链接的创建区别,硬链接共享inode,而软链接需要创建新的inode并存储目标文件路径。
订阅专栏 解锁全文
376

被折叠的 条评论
为什么被折叠?



