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;