don_crissti encontrou o original submissão de correção para a extensão de versões do inode para 64 bits, o que explica o uso desses campos:
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
é uma macro para l_i_version
(no Linux ); isso fornece os baixos 32 bits da versão do inode. Se o tamanho do inode for maior, i_version_hi
fornecerá os 32 bits mais altos.
i_version
é a versão do inode, que é incrementada toda vez que o inode é modificado (veja mount(8)
.