diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 04ea5e13d..db2338e12 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1293,8 +1293,10 @@ timeout_cb(void *cb_arg, struct spdk_nvme_ctrlr *ctrlr, } void -nvme_ctrlr_depopulate_namespace_done(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr) +nvme_ctrlr_depopulate_namespace_done(struct nvme_bdev_ns *nvme_ns) { + struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = nvme_ns->ctrlr; + pthread_mutex_lock(&g_bdev_nvme_mutex); assert(nvme_bdev_ctrlr->ref > 0); nvme_bdev_ctrlr->ref--; @@ -1319,7 +1321,7 @@ nvme_ctrlr_depopulate_standard_namespace(struct nvme_bdev_ns *nvme_ns) nvme_ns->populated = false; - nvme_ctrlr_depopulate_namespace_done(nvme_ns->ctrlr); + nvme_ctrlr_depopulate_namespace_done(nvme_ns); } static void diff --git a/module/bdev/nvme/bdev_ocssd.c b/module/bdev/nvme/bdev_ocssd.c index 0a106ae49..e231d5632 100644 --- a/module/bdev/nvme/bdev_ocssd.c +++ b/module/bdev/nvme/bdev_ocssd.c @@ -924,7 +924,7 @@ bdev_ocssd_free_namespace(struct nvme_bdev_ns *nvme_ns) free(nvme_ns->type_ctx); nvme_ns->type_ctx = NULL; - nvme_ctrlr_depopulate_namespace_done(nvme_ns->ctrlr); + nvme_ctrlr_depopulate_namespace_done(nvme_ns); } static void diff --git a/module/bdev/nvme/common.h b/module/bdev/nvme/common.h index 3b9efce41..61a483a61 100644 --- a/module/bdev/nvme/common.h +++ b/module/bdev/nvme/common.h @@ -155,7 +155,7 @@ struct nvme_io_channel { void nvme_ctrlr_populate_namespace_done(struct nvme_async_probe_ctx *ctx, struct nvme_bdev_ns *nvme_ns, int rc); -void nvme_ctrlr_depopulate_namespace_done(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr); +void nvme_ctrlr_depopulate_namespace_done(struct nvme_bdev_ns *nvme_ns); struct nvme_bdev_ctrlr *nvme_bdev_ctrlr_get(const struct spdk_nvme_transport_id *trid); struct nvme_bdev_ctrlr *nvme_bdev_ctrlr_get_by_name(const char *name); diff --git a/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c b/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c index d8dc3207a..1be28238a 100644 --- a/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c +++ b/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c @@ -195,8 +195,10 @@ nvme_ctrlr_populate_namespace_done(struct nvme_async_probe_ctx *ctx, } void -nvme_ctrlr_depopulate_namespace_done(struct nvme_bdev_ctrlr *ctrlr) +nvme_ctrlr_depopulate_namespace_done(struct nvme_bdev_ns *ns) { + struct nvme_bdev_ctrlr *ctrlr = ns->ctrlr; + CU_ASSERT(ctrlr->ref > 0); ctrlr->ref--;