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

Reply via email to