summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Lei <zhaolei@cn.fujitsu.com>2015-07-28 15:53:58 +0800
committerDavid Sterba <dsterba@suse.com>2015-10-02 17:55:14 +0200
commitcde38029bdfa7acc43ec91877d8e89cda6cedb11 (patch)
tree53c5873411d437a027f39c7f0319a0f0bb06cfa8
parent54fdddfdc14fa6e9ddf6960cb22d668d83cdf65e (diff)
btrfs-progs: Increase running state's priority in stat output
Anthony Plack <anthony@plack.net> reported a output bug in maillist: title: btrfs-progs SCRUB reporting aborted but still running - minor btrfs scrub status report it was aborted but still runs to completion. # btrfs scrub status /mnt/data scrub status for f591ac13-1a69-476d-bd30-346f87a491da scrub started at Mon Apr 27 06:48:44 2015 and was aborted after 1089 seconds total bytes scrubbed: 1.02TiB with 0 errors # # btrfs scrub status /mnt/data scrub status for f591ac13-1a69-476d-bd30-346f87a491da scrub started at Mon Apr 27 06:48:44 2015 and was aborted after 1664 seconds total bytes scrubbed: 1.53TiB with 0 errors # ... Reason: When scrub multi-device simultaneously, if some device canceled, and some device is still running, cancel state have higher priority to be outputed in global report. So we can see "scrub aborted" in status line, with running-time keeps increased. Fix: We can increase running state's priority in output, if there is some device in scrub state, we output running state instead of cancelled state. Reported-by: Anthony Plack <anthony@plack.net> Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--cmds-scrub.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/cmds-scrub.c b/cmds-scrub.c
index 0340471a..3ebda9dc 100644
--- a/cmds-scrub.c
+++ b/cmds-scrub.c
@@ -254,17 +254,15 @@ static void _print_scrub_ss(struct scrub_stats *ss)
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 %02u:%s\n", hours, t);
- } else if (ss->canceled) {
+ if (ss->in_progress)
+ printf(", running for %02u:%s\n", hours, t);
+ else if (ss->canceled)
printf(" and was aborted after %02u:%s\n", hours, t);
- } else {
- if (ss->in_progress)
- printf(", running for %02u:%s\n", hours, t);
- else
- printf(", interrupted after %02u:%s, not running\n",
- hours, t);
- }
+ else if (ss->finished)
+ printf(" and finished after %02u:%s\n", hours, t);
+ else
+ printf(", interrupted after %02u:%s, not running\n",
+ hours, t);
}
static void print_scrub_dev(struct btrfs_ioctl_dev_info_args *di,