]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
findsuper: improve output if s_mkfs_time unset
authorAndreas Dilger <adilger@dilger.ca>
Sun, 6 Mar 2016 23:16:04 +0000 (18:16 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 6 Mar 2016 23:16:04 +0000 (18:16 -0500)
If s_mkfs_time is not set in the superblock, print the s_mtime field
instead to identify the different superblocks.  This can happen if the
superblock is corrupted, since s_mkfs_time is not reset by e2fsck.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/findsuper.c

index eb9130baa7cb70cedc3f591da2a62853da60a9e5..b3b76cda46b6d49351ef394139f9f095a48bfe64 100644 (file)
@@ -187,7 +187,7 @@ int main(int argc, char *argv[])
        if (print_jnl_copies)
                printf(_("[*] probably superblock written in the ext3 "
                         "journal superblock,\n\tso start/end/grp wrong\n"));
-       printf(_("byte_offset  byte_start     byte_end  fs_blocks blksz  grp  last_mount_time           sb_uuid label\n"));
+       printf(_("byte_offset  byte_start     byte_end  fs_blocks blksz  grp  mkfs/mount_time           sb_uuid label\n"));
        for (; lseek64(fd, sk, SEEK_SET) != -1 &&
               read(fd, &ext2, 512) == 512; sk += skiprate) {
                static unsigned char last_uuid[16] = "blah";
@@ -230,7 +230,10 @@ int main(int argc, char *argv[])
                        WHY("free_inodes_count > inodes_count (%u > %u)\n",
                            ext2.s_free_inodes_count, ext2.s_inodes_count);
 
-               tm = ext2.s_mtime;
+               if (ext2.s_mkfs_time != 0)
+                       tm = ext2.s_mkfs_time;
+               else
+                       tm = ext2.s_mtime;
                s = ctime(&tm);
                s[24] = 0;
                bsize = 1 << (ext2.s_log_block_size + 10);