Whamcloud - gitweb
Merge branch 'maint' into next
[tools/e2fsprogs.git] / lib / e2p / ls.c
index 0f36f40..a7ea38a 100644 (file)
@@ -13,6 +13,7 @@
  * %End-Header%
  */
 
+#include "config.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/types.h>
@@ -195,6 +196,16 @@ static __u64 e2p_free_blocks_count(struct ext2_super_block *super)
 #define EXT2_GOOD_OLD_REV 0
 #endif
 
+static const char *checksum_type(__u8 type)
+{
+       switch (type) {
+       case EXT2_CRC32C_CHKSUM:
+               return "crc32c";
+       default:
+               return "unknown";
+       }
+}
+
 void list_super2(struct ext2_super_block * sb, FILE *f)
 {
        int inode_blocks_per_group;
@@ -258,6 +269,8 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
        else
                fprintf(f, "Fragment size:            %u\n",
                        EXT2_CLUSTER_SIZE(sb));
+       if (sb->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT)
+               fprintf(f, "Group descriptor size:    %u\n", sb->s_desc_size);
        if (sb->s_reserved_gdt_blocks)
                fprintf(f, "Reserved GDT blocks:      %u\n",
                        sb->s_reserved_gdt_blocks);
@@ -365,6 +378,14 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
                        fprintf(f, "type %u\n", sb->s_jnl_backup_type);
                }
        }
+       if (sb->s_backup_bgs[0] || sb->s_backup_bgs[1]) {
+               fprintf(f, "Backup block groups:      ");
+               if (sb->s_backup_bgs[0])
+                       fprintf(f, "%u ", sb->s_backup_bgs[0]);
+               if (sb->s_backup_bgs[1])
+                       fprintf(f, "%u ", sb->s_backup_bgs[1]);
+               fputc('\n', f);
+       }
        if (sb->s_snapshot_inum) {
                fprintf(f, "Snapshot inode:           %u\n",
                        sb->s_snapshot_inum);
@@ -407,12 +428,25 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
                fprintf(f, "Last error block #:       %llu\n",
                        sb->s_last_error_block);
        }
+       if (sb->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) {
+               fprintf(f, "MMP block number:         %llu\n",
+                       (long long)sb->s_mmp_block);
+               fprintf(f, "MMP update interval:      %u\n",
+                       sb->s_mmp_update_interval);
+       }
        if (sb->s_usr_quota_inum)
                fprintf(f, "User quota inode:         %u\n",
                        sb->s_usr_quota_inum);
        if (sb->s_grp_quota_inum)
                fprintf(f, "Group quota inode:        %u\n",
                        sb->s_grp_quota_inum);
+
+       if (sb->s_feature_ro_compat & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) {
+               fprintf(f, "Checksum type:            %s\n",
+                       checksum_type(sb->s_checksum_type));
+               fprintf(f, "Checksum:                 0x%08x\n",
+                       sb->s_checksum);
+       }
 }
 
 void list_super (struct ext2_super_block * s)