A different groups descriptor structure was introduced for ext4 filesystems.
This patch handles that.

 debugfs/debugfs.c    |    9 +++++++++
 debugfs/set_fields.c |    4 ++++
 e2fsck/super.c       |    4 ++++
 lib/ext2fs/closefs.c |    5 +++++
 lib/ext2fs/ext2fs.h  |    8 ++++++++
 lib/ext2fs/openfs.c  |    7 ++++++-
 lib/ext2fs/swapfs.c  |    4 ++++
 misc/mke2fs.c        |    4 ++++
 resize/resize2fs.c   |    2 +-
 9 files changed, 45 insertions(+), 2 deletions(-)


Index: e2fsprogs-1.39-tyt3-v6/lib/ext2fs/ext2fs.h
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/lib/ext2fs/ext2fs.h     2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/lib/ext2fs/ext2fs.h  2007-06-08 12:40:21.000000000 
+0200
@@ -213,7 +213,11 @@ struct struct_ext2_filsys {
        int                             fragsize;
        dgrp_t                          group_desc_count;
        unsigned long                   desc_blocks;
+#ifdef _EXT4FS_
+       struct ext4_group_desc *        group_desc;
+#else
        struct ext2_group_desc *        group_desc;
+#endif
        int                             inode_blocks_per_group;
        ext2fs_inode_bitmap             inode_map;
        ext2fs_block_bitmap             block_map;
@@ -1003,7 +1007,11 @@ extern errcode_t ext2fs_copy_bitmap(ext2
 extern void ext2fs_swap_ext_attr(char *to, char *from, int bufsize, 
                                 int has_header);
 extern void ext2fs_swap_super(struct ext2_super_block * super);
+#ifdef _EXT4FS_
+extern void ext2fs_swap_group_desc(struct ext4_group_desc *gdp);
+#else
 extern void ext2fs_swap_group_desc(struct ext2_group_desc *gdp);
+#endif
 extern void ext2fs_swap_extent_header(struct ext3_extent_header *eh);
 extern void ext2fs_swap_extent_index(struct ext3_extent_idx *ix);
 extern void ext2fs_swap_extent(struct ext3_extent *ex);
Index: e2fsprogs-1.39-tyt3-v6/debugfs/set_fields.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/debugfs/set_fields.c    2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/debugfs/set_fields.c 2007-06-08 12:40:21.000000000 
+0200
@@ -31,7 +31,11 @@
 
 static struct ext2_super_block set_sb;
 static struct ext2_inode set_inode;
+#ifdef _EXT4FS_
+static struct ext4_group_desc set_gd;
+#else
 static struct ext2_group_desc set_gd;
+#endif
 static ext2_ino_t set_ino;
 static int array_idx;
 
Index: e2fsprogs-1.39-tyt3-v6/resize/resize2fs.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/resize/resize2fs.c      2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/resize/resize2fs.c   2007-06-08 12:40:21.000000000 
+0200
@@ -365,7 +365,7 @@ retry:
        for (i = old_fs->group_desc_count;
             i < fs->group_desc_count; i++) {
                memset(&fs->group_desc[i], 0,
-                      sizeof(struct ext2_group_desc));
+                      sizeof(fs->group_desc[0]));
                adjblocks = 0;
 
                if (i == fs->group_desc_count-1) {
Index: e2fsprogs-1.39-tyt3-v6/misc/mke2fs.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/misc/mke2fs.c   2007-06-08 12:40:04.000000000 
+0200
+++ e2fsprogs-1.39-tyt3-v6/misc/mke2fs.c        2007-06-08 12:40:21.000000000 
+0200
@@ -449,7 +449,11 @@ static void setup_lazy_bg(ext2_filsys fs
        dgrp_t i;
        int blks;
        struct ext2_super_block *sb = fs->super;
+#ifdef _EXT4FS_
+       struct ext4_group_desc *bg = fs->group_desc;
+#else
        struct ext2_group_desc *bg = fs->group_desc;
+#endif
 
        if (EXT2_HAS_COMPAT_FEATURE(fs->super, 
                                    EXT2_FEATURE_COMPAT_LAZY_BG)) {
Index: e2fsprogs-1.39-tyt3-v6/debugfs/debugfs.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/debugfs/debugfs.c       2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/debugfs/debugfs.c    2007-06-08 12:40:21.000000000 
+0200
@@ -267,8 +267,13 @@ static void print_features(struct ext2_s
        fputs("\n", f);
 }
 
+#ifdef _EXT4FS_
+static void print_bg_opts(struct ext4_group_desc *gdp, int mask,
+                         const char *str, int *first, FILE *f)
+#else
 static void print_bg_opts(struct ext2_group_desc *gdp, int mask,
                          const char *str, int *first, FILE *f)
+#endif
 {
        if (gdp->bg_flags & mask) {
                if (*first) {
@@ -284,7 +289,11 @@ void do_show_super_stats(int argc, char 
 {
        dgrp_t  i;
        FILE    *out;
+#ifdef _EXT4FS_
+       struct ext4_group_desc *gdp;
+#else
        struct ext2_group_desc *gdp;
+#endif
        int     c, header_only = 0;
        int     numdirs = 0, first;
 
Index: e2fsprogs-1.39-tyt3-v6/e2fsck/super.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/e2fsck/super.c  2007-06-08 12:40:04.000000000 
+0200
+++ e2fsprogs-1.39-tyt3-v6/e2fsck/super.c       2007-06-08 12:40:21.000000000 
+0200
@@ -470,7 +470,11 @@ void check_super_block(e2fsck_t ctx)
        ext2_filsys fs = ctx->fs;
        blk_t   first_block, last_block;
        struct ext2_super_block *sb = fs->super;
+#ifdef _EXT4FS_
+       struct ext4_group_desc *gd;
+#else
        struct ext2_group_desc *gd;
+#endif
        blk_t   blocks_per_group = fs->super->s_blocks_per_group;
        blk_t   bpg_max;
        int     inodes_per_block;
Index: e2fsprogs-1.39-tyt3-v6/lib/ext2fs/swapfs.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/lib/ext2fs/swapfs.c     2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/lib/ext2fs/swapfs.c  2007-06-08 12:40:21.000000000 
+0200
@@ -77,7 +77,11 @@ void ext2fs_swap_super(struct ext2_super
 
 }
 
+#ifdef _EXT4FS_
+void ext2fs_swap_group_desc(struct ext4_group_desc *gdp)
+#else
 void ext2fs_swap_group_desc(struct ext2_group_desc *gdp)
+#endif
 {
        gdp->bg_block_bitmap = ext2fs_swab32(gdp->bg_block_bitmap);
        gdp->bg_inode_bitmap = ext2fs_swab32(gdp->bg_inode_bitmap);
Index: e2fsprogs-1.39-tyt3-v6/lib/ext2fs/openfs.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/lib/ext2fs/openfs.c     2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/lib/ext2fs/openfs.c  2007-06-08 12:40:21.000000000 
+0200
@@ -90,7 +90,6 @@ errcode_t ext2fs_open2(const char *name,
        int             j, groups_per_block, blocks_per_group, io_flags;
        blk_t           group_block, blk;
        char            *dest, *cp;
-       struct ext2_group_desc *gdp;
        
        EXT2_CHECK_MAGIC(manager, EXT2_ET_MAGIC_IO_MANAGER);
 
@@ -289,7 +288,13 @@ errcode_t ext2fs_open2(const char *name,
                        goto cleanup;
 #ifdef EXT2FS_ENABLE_SWAPFS
                if (fs->flags & EXT2_FLAG_SWAP_BYTES) {
+#ifdef _EXT4FS_
+                       struct ext4_group_desc *gdp;
+                       gdp = (struct ext4_group_desc *) dest;
+#else
+                       struct ext2_group_desc *gdp;
                        gdp = (struct ext2_group_desc *) dest;
+#endif
                        for (j=0; j < groups_per_block; j++)
                                ext2fs_swap_group_desc(gdp++);
                }
Index: e2fsprogs-1.39-tyt3-v6/lib/ext2fs/closefs.c
===================================================================
--- e2fsprogs-1.39-tyt3-v6.orig/lib/ext2fs/closefs.c    2007-06-08 
12:40:04.000000000 +0200
+++ e2fsprogs-1.39-tyt3-v6/lib/ext2fs/closefs.c 2007-06-08 12:40:21.000000000 
+0200
@@ -209,8 +209,13 @@ errcode_t ext2fs_flush(ext2_filsys fs)
        errcode_t       retval;
        unsigned long   fs_state;
        struct ext2_super_block *super_shadow = 0;
+#ifdef _EXT4FS_
+       struct ext4_group_desc *group_shadow = 0;
+       struct ext4_group_desc *s, *t;
+#else
        struct ext2_group_desc *group_shadow = 0;
        struct ext2_group_desc *s, *t;
+#endif
        char    *group_ptr;
        int     old_desc_blocks;
        

Reply via email to