OSDN Git Service

Add support for Next3 snapshot superblock fields to dumpe2fs and debugfs
authorTheodore Ts'o <tytso@mit.edu>
Fri, 25 Jun 2010 01:08:37 +0000 (21:08 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 25 Jun 2010 01:08:37 +0000 (21:08 -0400)
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" <tytso@mit.edu>
debugfs/set_fields.c
lib/e2p/ls.c
lib/ext2fs/swapfs.c

index 5f02472..6e71fe8 100644 (file)
@@ -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 }
 };
 
index 9788824..b208e66 100644 (file)
@@ -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)
index 74a551d..6f6cec2 100644 (file)
@@ -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]);