ext4の理解に関連する内部と秘密を理解しようとしています。ext4.wiki。著者は、使用された構造(例:ext4_inodeのレイアウト/構造)を示すために最善を尽くしますが、時にはアイデアが不足しているようです。
使い方を調べてみるとl_i_version
次のようになります。
l_i_versionバージョン(i_ Generationフィールドの上位32ビット?)
後で同じ領域にstruct ext4_inode
フィールドが表示されます。
__le32 i_version_hi; /* high 32 bits for 64-bit version */
これは高い32ビットからすでに高い32ビットのようです。
誰かがこれに陰を作ることができますか?
答え1
ドンクリスティオリジナルを見つけましたパッチの提出inodeバージョンを64ビットに拡張すると、これらのフィールドの目的が説明されます。
inode->i_version = le32_to_cpu(raw_inode->i_disk_version);
if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE) {
if (EXT4_FITS_IN_INODE(raw_inode, ei, i_version_hi))
inode->i_version |=
(__u64)(le32_to_cpu(raw_inode->i_version_hi)) << 32;
}
i_disk_version
はマクロl_i_version
(Linuxの場合)これはinodeバージョンの下位32ビットを提供します。 inodeサイズが大きい場合は、i_version_hi
上位32ビットが提供されます。
i_version
inodeバージョンは、inodeが変更されるたびに増加します(参照:mount(8)
。