@@ -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);
@@ -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);