ext4:ディスクレイアウトのめも2

Ext4_Disk_Layoutの「Finding an Inode」を見ていて気づいたところのめも。前回の日記でも同じようにやってたはず。。。

ブロックグループは以下の式で。

bg = (inode_num - 1) / sb->s_inodes_per_group.

test.txtの場合は。

(0xC - 1) / 0x2000

だから

masami@saga:~/codes/read_ext4$ echo "obase=16;ibase=16; B/2000" | bc
0

inodeのインデックスは

index = (inode_num - 1) % sb->s_inodes_per_group

なので

masami@saga:~/codes/read_ext4$ echo "obase=16;ibase=16; B%2000" | bc
B

最終的なアドレスは

addr = index * sb->s_inode_size.

ということで、

masami@saga:~/codes/read_ext4$ echo "obase=16;ibase=16; B*100" | bc
B00

あとはこのB00にinodeテーブルの開始アドレスを足せばOK。

そうするとブロックグループ0のinodeテーブルを見るのは間違っていなかったということで。

詳解 Linuxカーネル 第3版

詳解 Linuxカーネル 第3版