2

我正在尝试打印 ext2 文件系统中的所有单个间接块。我可以很容易地打印直接块(0-11),但我不明白如何到达单个间接块,然后是双重和三重间接块。如果我查看 ino->i_block[12] 的值,我如何使用它来到达它指向的位置?我确定我在这里遗漏了一些简单的东西

4

1 回答 1

3

EXT2 中的一个 inode 有 128 个字节长,并且包含许多不同的字段。

i_size 字段表示文件中存储的字节数,即文件的长度。i_block 数组是一个包含 15 个块编号的数组。

数组中的前 12 个条目(i_block[0] 到 i_block[11])包含直接块的块号:它们命名包含文件内容的前 12 个块的数据块。

数组中的第 13 个条目 (i_block[12]) 包含单个间接块的块号:它命名包含 4 字节块号数组的块;这些块中的每一个都包含额外的文件内容。

数组中的第 14 个条目 (i_block[13]) 包含一个双重间接块的块号:它命名一个包含一个 4 字节块号数组的块,这些块中的每一个块都位于一个单间接块中,其中包含一个直接块的 4 字节块号数组。数组中的第 15 个条目 (i_block[14]) 包含三重间接块的块号。

于 2013-03-20T06:52:54.810 回答