From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Refactor this helper to avoid cycling the scrub context lock when the user hasn't configured a maximum error count threshold. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- scrub/common.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/scrub/common.c b/scrub/common.c index b1c6abd1..261c6bb2 100644 --- a/scrub/common.c +++ b/scrub/common.c @@ -33,13 +33,20 @@ bool xfs_scrub_excessive_errors( struct scrub_ctx *ctx) { - bool ret; + unsigned long long errors_seen; + + /* + * We only set max_errors at the start of the program, so it's safe to + * access it locklessly. + */ + if (ctx->max_errors <= 0) + return false; pthread_mutex_lock(&ctx->lock); - ret = ctx->max_errors > 0 && ctx->corruptions_found >= ctx->max_errors; + errors_seen = ctx->corruptions_found; pthread_mutex_unlock(&ctx->lock); - return ret; + return errors_seen >= ctx->max_errors; } static struct {