On Mon, Jul 12, 2021 at 05:43:10PM +0200, Jan Kara wrote: > @@ -825,6 +826,7 @@ struct ext2_super_block { > #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 > #define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 > #define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 > +#define EXT4_FEATURE_RO_COMPAT_ORPHAN_PRESENT 0x0080 > #define EXT4_FEATURE_RO_COMPAT_QUOTA 0x0100 > #define EXT4_FEATURE_RO_COMPAT_BIGALLOC 0x0200 (This isn't a full review of the patch, but just a quick feedback of what I've noticed so far.) Since Andreas has requested that we not get rid of the RO_COMPAT_SNAPSHOT, I'm using 0x0400 for EXT4_FEATURE_RO_COMPAT_ORPHAN_PRESENT in my testing. I also noted a number of new GCC warnings when running "make gcc-wall" on lib/ext2fs after applying this commit. - Ted /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/orphan.c: In function ‘ext2fs_do_orphan_file_block_csum’: /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/orphan.c:58:30: warning: pointer targets in passing argument 2 of ‘ext2fs_crc32c_le’ differ in signedness [-Wpointer-sign] 58 | crc = ext2fs_crc32c_le(crc, buf, inodes_per_ob * sizeof(__u32)); | ^~~ | | | char * In file included from /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/ext2fsP.h:16, from /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/orphan.c:16: /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/ext2fs.h:1075:63: note: expected ‘const unsigned char *’ but argument is of type ‘char *’ 1075 | extern __u32 ext2fs_crc32c_le(__u32 crc, unsigned char const *p, size_t len); | ~~~~~~~~~~~~~~~~~~~~~^ /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/orphan.c: In function ‘ext2fs_do_orphan_file_block_csum’: /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/orphan.c:58:30: warning: pointer targets in passing argument 2 of ‘ext2fs_crc32c_le’ differ in signedness [-Wpointer-sign] 58 | crc = ext2fs_crc32c_le(crc, buf, inodes_per_ob * sizeof(__u32)); | ^~~ | | | char * In file included from /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/ext2fsP.h:16, from /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/orphan.c:16: /usr/projects/e2fsprogs/e2fsprogs/lib/ext2fs/ext2fs.h:1075:63: note: expected ‘const unsigned char *’ but argument is of type ‘char *’ 1075 | extern __u32 ext2fs_crc32c_le(__u32 crc, unsigned char const *p, size_t len); | ~~~~~~~~~~~~~~~~~~~~~^ make[1]: Leaving directory '/build/e2fsprogs/lib/ext2fs'