2006-10-18 06:23:18

by Theodore Ts'o

[permalink] [raw]
Subject: [PATCH, E2FSPROGS] On-disk format definition group desciptor checksums


Comments?

- Ted


On-disk format definition for group descriptor checksums

- EXT4_FEATURE_RO_COMPAT_GDT_CSUM (0x0010?) - store a crc16 checksum in
the group descriptor (s_uuid[16] | __u32 group | ext3_group_desc
(excluding gd_checksum itself)). This allows the kernel to more safely
manage UNINIT groups.

Signed-off-by: "Theodore Ts'o" <[email protected]>

Index: e2fsprogs/lib/ext2fs/ext2_fs.h
===================================================================
--- e2fsprogs.orig/lib/ext2fs/ext2_fs.h 2006-10-18 02:20:35.000000000 -0400
+++ e2fsprogs/lib/ext2fs/ext2_fs.h 2006-10-18 02:20:41.000000000 -0400
@@ -144,7 +144,9 @@
__u16 bg_free_inodes_count; /* Free inodes count */
__u16 bg_used_dirs_count; /* Directories count */
__u16 bg_flags;
- __u32 bg_reserved[3];
+ __u32 bg_reserved[2];
+ __u16 bg_itable_unused; /* Unused inodes count */
+ __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/
};

struct ext4_group_desc
@@ -601,6 +603,7 @@
#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
/* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */
#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
+#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010

#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002


2006-10-18 19:28:43

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH, E2FSPROGS] On-disk format definition group desciptor checksums

On Oct 18, 2006 02:23 -0400, Theodore Ts'o wrote:
> On-disk format definition for group descriptor checksums
>
> - EXT4_FEATURE_RO_COMPAT_GDT_CSUM (0x0010?) - store a crc16 checksum in
> the group descriptor (s_uuid[16] | __u32 group | ext3_group_desc
> (excluding gd_checksum itself)). This allows the kernel to more safely
> manage UNINIT groups.
>
> Signed-off-by: "Theodore Ts'o" <[email protected]>

Looks good to me.

> Index: e2fsprogs/lib/ext2fs/ext2_fs.h
> ===================================================================
> --- e2fsprogs.orig/lib/ext2fs/ext2_fs.h 2006-10-18 02:20:35.000000000 -0400
> +++ e2fsprogs/lib/ext2fs/ext2_fs.h 2006-10-18 02:20:41.000000000 -0400
> @@ -144,7 +144,9 @@
> __u16 bg_free_inodes_count; /* Free inodes count */
> __u16 bg_used_dirs_count; /* Directories count */
> __u16 bg_flags;
> - __u32 bg_reserved[3];
> + __u32 bg_reserved[2];
> + __u16 bg_itable_unused; /* Unused inodes count */
> + __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/
> };
>
> struct ext4_group_desc
> @@ -601,6 +603,7 @@
> #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
> /* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */
> #define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
> +#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
>
> #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
> #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.