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)
.