diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index aa28822be..d471b6ab7 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1345,7 +1345,7 @@ nvme_ctrlr_depopulate_standard_namespace(struct nvme_bdev_ns *nvme_ns) { struct nvme_bdev *bdev; - bdev = nvme_ns->bdev; + bdev = nvme_bdev_ns_to_bdev(nvme_ns); if (bdev != NULL) { spdk_bdev_unregister(&bdev->disk, NULL, NULL); } @@ -1419,7 +1419,7 @@ nvme_ctrlr_populate_namespaces(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, /* NS is still there but attributes may have changed */ ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid); num_sectors = spdk_nvme_ns_get_num_sectors(ns); - bdev = nvme_ns->bdev; + bdev = nvme_bdev_ns_to_bdev(nvme_ns); assert(bdev != NULL); if (bdev->disk.blockcnt != num_sectors) { SPDK_NOTICELOG("NSID %u is resized: bdev name %s, old size %" PRIu64 ", new size %" PRIu64 "\n", @@ -1831,7 +1831,7 @@ nvme_ctrlr_populate_namespaces_done(struct nvme_async_probe_ctx *ctx) continue; } assert(nvme_ns->id == nsid); - nvme_bdev = nvme_ns->bdev; + nvme_bdev = nvme_bdev_ns_to_bdev(nvme_ns); if (nvme_bdev == NULL) { assert(nvme_ns->type == NVME_BDEV_NS_OCSSD); continue; diff --git a/module/bdev/nvme/bdev_ocssd.c b/module/bdev/nvme/bdev_ocssd.c index 2ea64c8f3..d96db452c 100644 --- a/module/bdev/nvme/bdev_ocssd.c +++ b/module/bdev/nvme/bdev_ocssd.c @@ -124,14 +124,17 @@ bdev_ocssd_config_json(struct spdk_json_write_ctx *w) void bdev_ocssd_namespace_config_json(struct spdk_json_write_ctx *w, struct nvme_bdev_ns *nvme_ns) { - assert(nvme_ns->bdev != NULL); + struct nvme_bdev *nvme_bdev; + + nvme_bdev = nvme_bdev_ns_to_bdev(nvme_ns); + assert(nvme_bdev != NULL); spdk_json_write_object_begin(w); spdk_json_write_named_string(w, "method", "bdev_ocssd_create"); spdk_json_write_named_object_begin(w, "params"); spdk_json_write_named_string(w, "ctrlr_name", nvme_ns->ctrlr->name); - spdk_json_write_named_string(w, "bdev_name", nvme_ns->bdev->disk.name); + spdk_json_write_named_string(w, "bdev_name", nvme_bdev->disk.name); spdk_json_write_named_uint32(w, "nsid", nvme_ns->id); spdk_json_write_object_end(w); @@ -871,7 +874,7 @@ bdev_ocssd_free_namespace(struct nvme_bdev_ns *nvme_ns) { struct nvme_bdev *bdev; - bdev = nvme_ns->bdev; + bdev = nvme_bdev_ns_to_bdev(nvme_ns); if (bdev != NULL) { spdk_bdev_unregister(&bdev->disk, NULL, NULL); } @@ -904,7 +907,7 @@ bdev_ocssd_push_media_events(struct nvme_bdev_ns *nvme_ns, return; } - nvme_bdev = nvme_ns->bdev; + nvme_bdev = nvme_bdev_ns_to_bdev(nvme_ns); if (nvme_bdev == NULL) { SPDK_INFOLOG(bdev_ocssd, "Dropping media management event\n"); return; @@ -933,7 +936,7 @@ bdev_ocssd_notify_media_management(struct nvme_bdev_ns *nvme_ns) { struct nvme_bdev *nvme_bdev; - nvme_bdev = nvme_ns->bdev; + nvme_bdev = nvme_bdev_ns_to_bdev(nvme_ns); if (nvme_bdev != NULL) { spdk_bdev_notify_media_management(&nvme_bdev->disk); } diff --git a/module/bdev/nvme/common.h b/module/bdev/nvme/common.h index e5705fb97..d7c01ae17 100644 --- a/module/bdev/nvme/common.h +++ b/module/bdev/nvme/common.h @@ -193,4 +193,10 @@ nvme_bdev_to_bdev_ns(struct nvme_bdev *nbdev) return nbdev->nvme_ns; } +static inline struct nvme_bdev * +nvme_bdev_ns_to_bdev(struct nvme_bdev_ns *nvme_ns) +{ + return nvme_ns->bdev; +} + #endif /* SPDK_COMMON_BDEV_NVME_H */ diff --git a/module/bdev/nvme/vbdev_opal.c b/module/bdev/nvme/vbdev_opal.c index 2b08c6988..1adefd89c 100644 --- a/module/bdev/nvme/vbdev_opal.c +++ b/module/bdev/nvme/vbdev_opal.c @@ -356,7 +356,7 @@ vbdev_opal_create(const char *nvme_ctrlr_name, uint32_t nsid, uint8_t locking_ra opal_bdev->nvme_ctrlr = nvme_ctrlr; opal_bdev->opal_dev = nvme_ctrlr->opal_dev; - nvme_bdev = nvme_ctrlr->namespaces[nsid - 1]->bdev; + nvme_bdev = nvme_bdev_ns_to_bdev(nvme_ctrlr->namespaces[nsid - 1]); assert(nvme_bdev != NULL); base_bdev_name = nvme_bdev->disk.name; diff --git a/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c b/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c index 7db24feee..ab519b05c 100644 --- a/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c +++ b/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c @@ -1475,7 +1475,7 @@ test_aer_cb(void) CU_ASSERT(nvme_bdev_ctrlr->namespaces[2]->populated == true); CU_ASSERT(nvme_bdev_ctrlr->namespaces[3]->populated == true); - bdev = nvme_bdev_ctrlr->namespaces[3]->bdev; + bdev = nvme_bdev_ns_to_bdev(nvme_bdev_ctrlr->namespaces[3]); SPDK_CU_ASSERT_FATAL(bdev != NULL); CU_ASSERT(bdev->disk.blockcnt == 1024); @@ -1607,7 +1607,7 @@ test_submit_nvme_cmd(void) nvme_bdev_ctrlr = nvme_bdev_ctrlr_get_by_name("nvme0"); SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL); - bdev = nvme_bdev_ctrlr->namespaces[0]->bdev; + bdev = nvme_bdev_ns_to_bdev(nvme_bdev_ctrlr->namespaces[0]); SPDK_CU_ASSERT_FATAL(bdev != NULL); ch = spdk_get_io_channel(nvme_bdev_ctrlr);