In qmt_device_fini, put the freeing of the qmt_lvbo_free_wq after
all possible usage of it having finished cleanup.
Signed-off-by: Hongchao Zhang <hongchao@whamcloud.com>
Change-Id: Ia26f1bc490adff5ae7dc850e2c89baf5874f01c5
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56778
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Sergey Cheremencev <scherementsev@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
CDEBUG(D_QUOTA, "%s: initiating QMT shutdown\n", qmt->qmt_svname);
qmt->qmt_stopping = true;
- if (qmt->qmt_lvbo_free_wq) {
- destroy_workqueue(qmt->qmt_lvbo_free_wq);
- qmt->qmt_lvbo_free_wq = NULL;
- }
-
/* kill pool instances, if any */
qmt_pool_fini(env, qmt);
ld->ld_obd->obd_namespace = NULL;
qmt->qmt_ns = NULL;
+ if (qmt->qmt_lvbo_free_wq) {
+ destroy_workqueue(qmt->qmt_lvbo_free_wq);
+ qmt->qmt_lvbo_free_wq = NULL;
+ }
+
RETURN(NULL);
}
#include "lquota_internal.h"
-extern struct workqueue_struct *qmt_lvbo_free_wq;
-
/*
* The Quota Master Target Device.
* The qmt is responsible for: