File 为什么在创建文件时读取垃圾索引节点是OS?

File 为什么在创建文件时读取垃圾索引节点是OS?,file,operating-system,filesystems,File,Operating System,Filesystems,我正在学习OSTEP一书中的操作系统。在“文件系统实现”一章中,有一个文件创建时间线,该时间线显示在创建文件时对什么类型的文件系统元素(索引节点、数据块、索引节点/数据位图等)执行的操作。下图显示了时间线 假设我们想在/foo/中创建一个文件bar,那么该文件将是/foo/bar。将访问哪些数据元素? 我理解以下步骤 (1) 从root开始读取,以转到我们要创建文件的位置,因此首先我们读取root的inode,以便访问其数据块以查找foo目录的inode编号。 (2) 从根数据块读取foo的i

我正在学习OSTEP一书中的操作系统。在“文件系统实现”一章中,有一个文件创建时间线,该时间线显示在创建文件时对什么类型的文件系统元素(索引节点、数据块、索引节点/数据位图等)执行的操作。下图显示了时间线

假设我们想在
/foo/
中创建一个文件
bar
,那么该文件将是
/foo/bar
。将访问哪些数据元素?
我理解以下步骤

(1) 从
root
开始读取,以转到我们要创建文件的位置,因此首先我们读取root的inode,以便访问其数据块以查找
foo
目录的inode编号。
(2) 从根数据块读取
foo
的inode编号
(3) 现在从
foo
的inode读取数据块的位置。
(4) 在
foo
的数据块中,我们检查是否有名为
bar
的文件。如果没有,我们只能继续创建,因为Linux不允许在同一目录中使用相同的文件名
(5) 假设我们可以继续,我们从inode位图中读取,以找到哪个inode可用于分配
(6) 然后,我们通过写入上述发现的inode的对应位图位置来分配该inode
(7) 然后我们在
foo
中为
bar
文件创建一个条目。条目将是一对
('bar',)
。所以写一个
foo

(8) 现在我被困在
bar
的inode中。为什么我们需要阅读这个inode

我想我们应该马上在酒吧的inode上写。我们必须将bar的元数据写入这个inode,对吗?那我们为什么要读呢