From ba60bb903f1e7e5fc29922bd851737fa26e0a5ae Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Sun, 6 Mar 2016 18:16:04 -0500 Subject: [PATCH] findsuper: improve output if s_mkfs_time unset 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 Signed-off-by: Theodore Ts'o --- misc/findsuper.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/misc/findsuper.c b/misc/findsuper.c index eb9130b..b3b76cd 100644 --- a/misc/findsuper.c +++ b/misc/findsuper.c @@ -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); -- 1.8.3.1