From: Darrick J. Wong Date: Thu, 6 Jun 2019 13:58:55 +0000 (-0500) Subject: xfs_scrub: fix background-mode sleep throttling X-Git-Tag: v5.1.0-rc1~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1500ee2c37d82073c6a52f84c74fd52d3318cc39;p=thirdparty%2Fxfsprogs-dev.git xfs_scrub: fix background-mode sleep throttling The comment preceding background_sleep() is wrong -- the function sleeps 100us, not 100ms, for every '-b' passed in after the first one. This is really not obvious from the magic numbers, so fix the comment and use symbolic constants for easier reading. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/scrub/common.c b/scrub/common.c index c877c7c8f..1cd2b7ba6 100644 --- a/scrub/common.c +++ b/scrub/common.c @@ -253,21 +253,23 @@ scrub_nproc_workqueue( } /* - * Sleep for 100ms * however many -b we got past the initial one. + * Sleep for 100us * however many -b we got past the initial one. * This is an (albeit clumsy) way to throttle scrub activity. */ +#define NSEC_PER_SEC 1000000000ULL +#define NSEC_PER_USEC 1000ULL void background_sleep(void) { - unsigned long long time; + unsigned long long time_ns; struct timespec tv; if (bg_mode < 2) return; - time = 100000ULL * (bg_mode - 1); - tv.tv_sec = time / 1000000; - tv.tv_nsec = time % 1000000; + time_ns = 100 * NSEC_PER_USEC * (bg_mode - 1); + tv.tv_sec = time_ns / NSEC_PER_SEC; + tv.tv_nsec = time_ns % NSEC_PER_SEC; nanosleep(&tv, NULL); }