Just a quick thought:
Milos Nikic, le lun. 26 janv. 2026 23:06:01 -0800, a ecrit:
> index daa49543..6460db35 100644
> --- a/ext2fs/ext2_fs.h
> +++ b/ext2fs/ext2_fs.h
> @@ -278,6 +278,18 @@ struct ext2_inode {
> } osd2; /* OS dependent 2 */
> };
>
> +struct ext2_inode_extra {
> + __u16 i_extra_isize; /* Size of this extra record */
> + __u16 i_checksum_hi; /* Upper 16-bits of inode checksum */
> + __u32 i_ctime_extra; /* Extra ctime bits (nanos + epoch) */
> + __u32 i_mtime_extra; /* Extra mtime bits (nanos + epoch) */
> + __u32 i_atime_extra; /* Extra atime bits (nanos + epoch) */
Thinking about it: since we increase the inode size to 32B, we have to
fill these fields: i_extra_isize and i_checksum_hi
> + __u32 i_crtime; /* File creation time (Birth time) */
> + __u32 i_crtime_extra; /* Extra crtime bits */
> + __u32 i_version_hi; /* High 32 bits of 64-bit version */
> + __u32 i_projid; /* Project ID */
> +};
> +
> #define i_size_high i_dir_acl
>
> #define i_translator osd1.hurd1.h_i_translator
> @@ -425,10 +437,13 @@ struct ext2_super_block {
> #define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */
> #define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */
>
> -#define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV
> +#define EXT2_CURRENT_REV EXT2_DYNAMIC_REV
> #define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV
>
> #define EXT2_GOOD_OLD_INODE_SIZE 128
> +#define EXT2_INODE_EXTENT_SIZE \
Put some "TIME" in the name so it's clear what size we are talking
about. We may have more fields to look at.
> + (offsetof (struct ext2_inode_extra, i_mtime_extra) + \
> + sizeof (((struct ext2_inode_extra *)0)->i_mtime_extra))
>
> /*
> * Feature set definitions