btrfs-progs: scrub: more friendly duration format in status
authorDavid Sterba <dsterba@suse.cz>
Thu, 4 Jun 2015 14:49:00 +0000 (16:49 +0200)
committerDavid Sterba <dsterba@suse.cz>
Thu, 4 Jun 2015 14:50:15 +0000 (16:50 +0200)
scrub status for d4dc0da9-e8cc-4bfe-9b6f-2dcf8e0754f5
scrub started at Sat Jan  1 00:00:01 UTC 2000 and finished after 00:43:05
total bytes scrubbed: 111.17GiB with 0 errors

Signed-off-by: David Sterba <dsterba@suse.cz>
cmds-scrub.c

index 06c2a30..1f37d17 100644 (file)
@@ -229,6 +229,8 @@ static void _print_scrub_ss(struct scrub_stats *ss)
 {
        char t[4096];
        struct tm tm;
+       time_t seconds;
+       unsigned hours;
 
        if (!ss || !ss->t_start) {
                printf("\tno stats available\n");
@@ -245,18 +247,21 @@ static void _print_scrub_ss(struct scrub_stats *ss)
                t[sizeof(t) - 1] = '\0';
                printf("\tscrub started at %s", t);
        }
+
+       seconds = ss->duration;
+       hours = ss->duration / (60 * 60);
+       gmtime_r(&seconds, &tm);
+       strftime(t, sizeof(t), "%M:%S", &tm);
        if (ss->finished && !ss->canceled) {
-               printf(" and finished after %llu seconds\n",
-                      ss->duration);
+               printf(" and finished after %02u:%s\n", hours, t);
        } else if (ss->canceled) {
-               printf(" and was aborted after %llu seconds\n",
-                      ss->duration);
+               printf(" and was aborted after %02u:%s\n", hours, t);
        } else {
                if (ss->in_progress)
-                       printf(", running for %llu seconds\n", ss->duration);
+                       printf(", running for %02u:%s\n", hours, t);
                else
-                       printf(", interrupted after %llu seconds, not running\n",
-                                       ss->duration);
+                       printf(", interrupted after %02u:%s, not running\n",
+                                       hours, t);
        }
 }