diff mbox

btrfs-progs: Increase running state's priority in stat output

Message ID 7c723cfb3f6b2d792b832b96f2b6b0258a13044e.1438070027.git.zhaolei@cn.fujitsu.com (mailing list archive)
State Accepted
Headers show

Commit Message

Zhaolei July 28, 2015, 7:53 a.m. UTC
From: Zhao Lei <zhaolei@cn.fujitsu.com>

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>
---
 cmds-scrub.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

Comments

David Sterba Sept. 25, 2015, 5:39 p.m. UTC | #1
On Tue, Jul 28, 2015 at 03:53:58PM +0800, Zhaolei wrote:
> From: Zhao Lei <zhaolei@cn.fujitsu.com>
> 
> 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>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/cmds-scrub.c b/cmds-scrub.c
index b7aa809..7c9318e 100644
--- a/cmds-scrub.c
+++ b/cmds-scrub.c
@@ -252,17 +252,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,