From: Darrick J. Wong Date: Tue, 15 Oct 2019 16:55:05 +0000 (-0400) Subject: xfs_scrub: redistribute read verify pool flush and destroy responsibilities X-Git-Tag: v5.3.0-rc2~84 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7668d01d4b4ef72933cd686940e2b15615342df2;p=thirdparty%2Fxfsprogs-dev.git xfs_scrub: redistribute read verify pool flush and destroy responsibilities Since workqueues now have separate primitives for "wait for all queued work" and "destroy workqueue", it makes more sense for the read verify pool code to call the workqueue destructor from its own destructor function. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/scrub/phase6.c b/scrub/phase6.c index b41f90e0f..aff04e76f 100644 --- a/scrub/phase6.c +++ b/scrub/phase6.c @@ -511,12 +511,17 @@ _("Could not create data device media verifier.")); return moveon; out_rtpool: - if (vs.rvp_realtime) + if (vs.rvp_realtime) { + read_verify_pool_flush(vs.rvp_realtime); read_verify_pool_destroy(vs.rvp_realtime); + } out_logpool: - if (vs.rvp_log) + if (vs.rvp_log) { + read_verify_pool_flush(vs.rvp_log); read_verify_pool_destroy(vs.rvp_log); + } out_datapool: + read_verify_pool_flush(vs.rvp_data); read_verify_pool_destroy(vs.rvp_data); out_rbad: bitmap_free(&vs.r_bad); diff --git a/scrub/read_verify.c b/scrub/read_verify.c index bb8f09a85..e59d3e670 100644 --- a/scrub/read_verify.c +++ b/scrub/read_verify.c @@ -121,7 +121,6 @@ read_verify_pool_flush( struct read_verify_pool *rvp) { workqueue_terminate(&rvp->wq); - workqueue_destroy(&rvp->wq); } /* Finish up any read verification work and tear it down. */ @@ -129,6 +128,7 @@ void read_verify_pool_destroy( struct read_verify_pool *rvp) { + workqueue_destroy(&rvp->wq); ptvar_free(rvp->rvstate); ptcounter_free(rvp->verified_bytes); free(rvp->readbuf);