svn commit: r354955 - in vendor/illumos/dist: cmd/zpool man/man1m

Andriy Gapon avg at FreeBSD.org
Thu Nov 21 14:01:00 UTC 2019


Author: avg
Date: Thu Nov 21 14:00:59 2019
New Revision: 354955
URL: https://svnweb.freebsd.org/changeset/base/354955

Log:
  10900 Fix estimated scrub completion time
  
  illumos/illumos-gate at 3db6627c6730f7ec4426ac0be0e9338235aed2d8
  https://github.com/illumos/illumos-gate/commit/3db6627c6730f7ec4426ac0be0e9338235aed2d8
  
  https://www.illumos.org/issues/10900
    ZoL update:
    Author: Tom Caputi <tcaputi at datto.com>
    Date:   Wed May 1 20:34:24 2019 -0400
  
        Fix estimated scrub completion time
  
            Currently, it is possible for the 'zpool scrub' command to
            progress slightly beyond 100% due to concurrent changes
            happening on the live pool. This behavior is expected, but
            the userspace code for 'zpool status' would subtract the
            expected amount of data from the amount of data already
            scrubbed, resulting in a negative integer being casted to a
            large positive one. This number was then used to calculate
            the estimated completion time, resulting in wildly wrong
            results. This code changes the behavior so that 'zpool status'
            does not attempt to report an estimate during this period.
  
            Reviewed by: Brian Behlendorf <behlendorf1 at llnl.gov>
            Reviewed-by: Igor Kozhukhov <igor at dilos.org>
            Reviewed-by: George Melikov <mail at gmelikov.ru>
            Signed-off-by: Tom Caputi <tcaputi at datto.com>
            Closes #8611
            Closes #8687
    After this fix, the zpool status output does display more reasonable output.
  
  Author: Tom Caputi <tcaputi at datto.com>

Modified:
  vendor/illumos/dist/cmd/zpool/zpool_main.c
  vendor/illumos/dist/man/man1m/zpool.1m

Modified: vendor/illumos/dist/cmd/zpool/zpool_main.c
==============================================================================
--- vendor/illumos/dist/cmd/zpool/zpool_main.c	Thu Nov 21 14:00:09 2019	(r354954)
+++ vendor/illumos/dist/cmd/zpool/zpool_main.c	Thu Nov 21 14:00:59 2019	(r354955)
@@ -4804,7 +4804,7 @@ print_scan_status(pool_scan_stat_t *ps)
 
 	scan_rate = pass_scanned / elapsed;
 	issue_rate = pass_issued / elapsed;
-	total_secs_left = (issue_rate != 0) ?
+	total_secs_left = (issue_rate != 0 && total >= issued) ?
 	    ((total - issued) / issue_rate) : UINT64_MAX;
 
 	days_left = total_secs_left / 60 / 60 / 24;
@@ -4838,7 +4838,8 @@ print_scan_status(pool_scan_stat_t *ps)
 	}
 
 	if (pause == 0) {
-		if (issue_rate >= 10 * 1024 * 1024) {
+		if (total_secs_left != UINT64_MAX &&
+		    issue_rate >= 10 * 1024 * 1024) {
 			(void) printf(gettext(", %llu days "
 			    "%02llu:%02llu:%02llu to go\n"),
 			    (u_longlong_t)days_left, (u_longlong_t)hours_left,

Modified: vendor/illumos/dist/man/man1m/zpool.1m
==============================================================================
--- vendor/illumos/dist/man/man1m/zpool.1m	Thu Nov 21 14:00:09 2019	(r354954)
+++ vendor/illumos/dist/man/man1m/zpool.1m	Thu Nov 21 14:00:59 2019	(r354955)
@@ -1808,6 +1808,10 @@ If a scrub is paused, the
 resumes it.
 If a resilver is in progress, ZFS does not allow a scrub to be started until the
 resilver completes.
+.Pp
+Note that, due to changes in pool data on a live system, it is possible for
+scrubs to progress slightly beyond 100% completion.
+During this period, no completion time estimate will be provided.
 .Bl -tag -width Ds
 .It Fl s
 Stop scrubbing.


More information about the svn-src-all mailing list