From: Theodore Ts'o Date: Mon, 16 Nov 2009 05:30:57 +0000 (-0500) Subject: Merge branch 'maint' into next X-Git-Tag: v1.41.90.wc1~75 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=4486af5b4c1b117ac88a92cd2336cb41c15107d3;p=tools%2Fe2fsprogs.git Merge branch 'maint' into next Conflicts: misc/mke2fs.c --- 4486af5b4c1b117ac88a92cd2336cb41c15107d3 diff --cc lib/ext2fs/swapfs.c index 849f547,9964919..acdb7e9 --- a/lib/ext2fs/swapfs.c +++ b/lib/ext2fs/swapfs.c @@@ -73,14 -73,23 +73,24 @@@ void ext2fs_swap_super(struct ext2_supe sb->s_kbytes_written = ext2fs_swab64(sb->s_kbytes_written); for (i=0; i < 4; i++) sb->s_hash_seed[i] = ext2fs_swab32(sb->s_hash_seed[i]); + + /* if journal backup is for a valid extent-based journal... */ + if (!ext2fs_extent_header_verify(sb->s_jnl_blocks, + sizeof(sb->s_jnl_blocks))) { + /* ... swap only the journal i_size */ + sb->s_jnl_blocks[16] = ext2fs_swab32(sb->s_jnl_blocks[16]); + /* and the extent data is not swapped on read */ + return; + } + + /* direct/indirect journal: swap it all */ for (i=0; i < 17; i++) sb->s_jnl_blocks[i] = ext2fs_swab32(sb->s_jnl_blocks[i]); - } -void ext2fs_swap_group_desc(struct ext2_group_desc *gdp) +void ext2fs_swap_group_desc2(ext2_filsys fs, struct ext2_group_desc *gdp) { + /* Do the 32-bit parts first */ gdp->bg_block_bitmap = ext2fs_swab32(gdp->bg_block_bitmap); gdp->bg_inode_bitmap = ext2fs_swab32(gdp->bg_inode_bitmap); gdp->bg_inode_table = ext2fs_swab32(gdp->bg_inode_table);