btrfs-progs: scrub: more friendly duration format in status

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>
master
David Sterba 2015-06-04 16:49:00 +02:00
parent 4f43aaf4aa
commit 65cc6883c0
1 changed files with 12 additions and 7 deletions

View File

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