From: Theodore Ts'o Date: Fri, 25 Jun 2010 01:08:37 +0000 (-0400) Subject: Add support for Next3 snapshot superblock fields to dumpe2fs and debugfs X-Git-Tag: v1.41.13~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5448c19acda0bae0673d17e97b8a0590c99c944;p=thirdparty%2Fe2fsprogs.git Add support for Next3 snapshot superblock fields to dumpe2fs and debugfs We also support for byte-swapping the Next3 fields, although the current Next3 implementation doesn't support big-endian systems. Signed-off-by: "Theodore Ts'o" --- diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c index 5f02472eb..6e71fe8ad 100644 --- a/debugfs/set_fields.c +++ b/debugfs/set_fields.c @@ -134,6 +134,11 @@ static struct field_set_info super_fields[] = { { "raid_stripe_width", &set_sb.s_raid_stripe_width, 4, parse_uint }, { "log_groups_per_flex", &set_sb.s_log_groups_per_flex, 1, parse_uint }, { "kbytes_written", &set_sb.s_kbytes_written, 8, parse_uint }, + { "snapshot_inum", &set_sb.s_snapshot_inum, 4, parse_uint }, + { "snapshot_id", &set_sb.s_snapshot_id, 4, parse_uint }, + { "snapshot_r_blocks_count", &set_sb.s_snapshot_r_blocks_count, 8, + parse_uint }, + { "snapshot_list", &set_sb.s_snapshot_list, 4, parse_uint }, { 0, 0, 0, 0 } }; diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c index 978882411..b208e6618 100644 --- a/lib/e2p/ls.c +++ b/lib/e2p/ls.c @@ -330,6 +330,17 @@ void list_super2(struct ext2_super_block * sb, FILE *f) fprintf(f, "type %u\n", sb->s_jnl_backup_type); } } + if (sb->s_snapshot_inum) { + fprintf(f, "Snapshot inode: %u\n", + sb->s_snapshot_inum); + fprintf(f, "Snapshot ID: %u\n", + sb->s_snapshot_id); + fprintf(f, "Snapshot reserved blocks: %llu\n", + sb->s_snapshot_r_blocks_count); + } + if (sb->s_snapshot_list) + fprintf(f, "Snapshot list head: %u\n", + sb->s_snapshot_list); } void list_super (struct ext2_super_block * s) diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c index 74a551dfb..6f6cec2d5 100644 --- a/lib/ext2fs/swapfs.c +++ b/lib/ext2fs/swapfs.c @@ -71,6 +71,12 @@ void ext2fs_swap_super(struct ext2_super_block * sb) sb->s_want_extra_isize = ext2fs_swab16(sb->s_want_extra_isize); sb->s_flags = ext2fs_swab32(sb->s_flags); sb->s_kbytes_written = ext2fs_swab64(sb->s_kbytes_written); + sb->s_snapshot_inum = ext2fs_swab32(sb->s_snapshot_inum); + sb->s_snapshot_id = ext2fs_swab32(s_snapshot_id); + sb->s_snapshot_r_blocks_count = + ext2fs_swab64(sb->s_snapshot_r_blocks_count); + sb->s_snapshot_list = ext2fs_swab32(sb->s_snapshot_list); + for (i=0; i < 4; i++) sb->s_hash_seed[i] = ext2fs_swab32(sb->s_hash_seed[i]);