From f5448c19acda0bae0673d17e97b8a0590c99c944 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Thu, 24 Jun 2010 21:08:37 -0400 Subject: [PATCH] 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" --- debugfs/set_fields.c | 5 +++++ lib/e2p/ls.c | 11 +++++++++++ lib/ext2fs/swapfs.c | 6 ++++++ 3 files changed, 22 insertions(+) diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c index 5f02472..6e71fe8 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 9788824..b208e66 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 74a551d..6f6cec2 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]); -- 1.8.3.1