1
0
mirror of https://github.com/bobranten/Ext4Fsd.git synced 2025-10-29 13:18:30 -05:00

set the new fields _extra to support year 2038 and nano second file times

This commit is contained in:
Bo Branten
2024-09-02 17:06:40 +02:00
parent 1a857ce8f7
commit f9a7a56975

View File

@@ -462,6 +462,17 @@ void Ext2DecodeInode(struct inode *dst, struct ext4_inode *src)
dst->i_extra_isize = src->i_extra_isize;
else
dst->i_extra_isize = 0;
if (EXT4_INODE_SIZE(dst->i_sb) > EXT4_GOOD_OLD_INODE_SIZE &&
offsetof(struct ext4_inode, i_atime_extra) + sizeof(src->i_atime_extra) <= (ULONGLONG)EXT4_GOOD_OLD_INODE_SIZE + src->i_extra_isize) {
dst->i_atime_extra = src->i_atime_extra;
dst->i_ctime_extra = src->i_ctime_extra;
dst->i_mtime_extra = src->i_mtime_extra;
}
if (EXT4_INODE_SIZE(dst->i_sb) > EXT4_GOOD_OLD_INODE_SIZE &&
offsetof(struct ext4_inode, i_crtime_extra) + sizeof(src->i_crtime_extra) <= (ULONGLONG)EXT4_GOOD_OLD_INODE_SIZE + src->i_extra_isize) {
dst->i_crtime = src->i_crtime;
dst->i_crtime_extra = src->i_crtime_extra;
}
}
void Ext2EncodeInode(struct ext4_inode *dst, struct inode *src)
@@ -489,6 +500,17 @@ void Ext2EncodeInode(struct ext4_inode *dst, struct inode *src)
if (EXT4_HAS_RO_COMPAT_FEATURE(src->i_sb,
EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE))
dst->i_extra_isize = src->i_extra_isize;
if (EXT4_INODE_SIZE(src->i_sb) > EXT4_GOOD_OLD_INODE_SIZE &&
offsetof(struct ext4_inode, i_atime_extra) + sizeof(dst->i_atime_extra) <= (ULONGLONG)EXT4_GOOD_OLD_INODE_SIZE + dst->i_extra_isize) {
dst->i_atime_extra = src->i_atime_extra;
dst->i_ctime_extra = src->i_ctime_extra;
dst->i_mtime_extra = src->i_mtime_extra;
}
if (EXT4_INODE_SIZE(src->i_sb) > EXT4_GOOD_OLD_INODE_SIZE &&
offsetof(struct ext4_inode, i_crtime_extra) + sizeof(dst->i_crtime_extra) <= (ULONGLONG)EXT4_GOOD_OLD_INODE_SIZE + dst->i_extra_isize) {
dst->i_crtime = src->i_crtime;
dst->i_crtime_extra = src->i_crtime_extra;
}
}
BOOLEAN