]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_scrub: redistribute read verify pool flush and destroy responsibilities
authorDarrick J. Wong <darrick.wong@oracle.com>
Tue, 15 Oct 2019 16:55:05 +0000 (12:55 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Tue, 15 Oct 2019 16:55:05 +0000 (12:55 -0400)
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 <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
scrub/phase6.c
scrub/read_verify.c

index b41f90e0ff775791b43c86955ec934fb8cec8810..aff04e76f06040cfd58ff9ebf289cb3aa016f694 100644 (file)
@@ -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);
index bb8f09a85f7fade597d19bbf342d91b0219e5adc..e59d3e670c52c93376d03eabdc20bcf53cfe0a3a 100644 (file)
@@ -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);