Fix resize inode handling on big endian systems, by adding new routines
that read/write indirect blocks, byte swapping them if necessary.
diff --git a/lib/ext2fs/res_gdt.c b/lib/ext2fs/res_gdt.c
index 4706589..1fdb1d4 100644
--- a/lib/ext2fs/res_gdt.c
+++ b/lib/ext2fs/res_gdt.c
@@ -91,7 +91,7 @@
#ifdef RES_GDT_DEBUG
printf("reading GDT dindir %u\n", dindir_blk);
#endif
- retval = io_channel_read_blk(fs->io, dindir_blk, 1, dindir_buf);
+ retval = ext2fs_read_ind_block(fs, dindir_blk, dindir_buf);
if (retval)
goto out_inode;
} else {
@@ -154,7 +154,7 @@
#ifdef RES_GDT_DEBUG
printf("reading primary GDT block %u\n", gdt_blk);
#endif
- retval = io_channel_read_blk(fs->io,gdt_blk,1,gdt_buf);
+ retval = ext2fs_read_ind_block(fs, gdt_blk, gdt_buf);
if (retval)
goto out_dindir;
} else {
@@ -192,7 +192,7 @@
#ifdef RES_GDT_DEBUG
printf("writing primary GDT block %u\n", gdt_blk);
#endif
- retval = io_channel_write_blk(fs->io,gdt_blk,1,gdt_buf);
+ retval = ext2fs_write_ind_block(fs, gdt_blk, gdt_buf);
if (retval)
goto out_dindir;
}
@@ -200,7 +200,7 @@
out_dindir:
if (dindir_dirty) {
- retval2 = io_channel_write_blk(fs->io, dindir_blk,1,dindir_buf);
+ retval2 = ext2fs_write_ind_block(fs, dindir_blk, dindir_buf);
if (!retval)
retval = retval2;
}