diff --git a/lib/bdev/nvme/bdev_nvme.c b/lib/bdev/nvme/bdev_nvme.c index 958c1c23d..11f2bac44 100644 --- a/lib/bdev/nvme/bdev_nvme.c +++ b/lib/bdev/nvme/bdev_nvme.c @@ -1408,31 +1408,13 @@ bdev_nvme_get_spdk_running_config(FILE *fp) } struct spdk_nvme_ctrlr * -spdk_bdev_nvme_get_ctrlr(void *bdev_) +spdk_bdev_nvme_get_ctrlr(struct spdk_bdev *bdev) { - struct nvme_bdev *btmp; - struct spdk_bdev *bdev = bdev_; - struct nvme_bdev *nbdev; - - if (!bdev || !bdev->ctxt) { + if (!bdev || bdev->module != SPDK_GET_BDEV_MODULE(nvme)) { return NULL; } - nbdev = (struct nvme_bdev *)bdev->ctxt; - /* - * Make sure nbdev is NVMe bdev - */ - TAILQ_FOREACH(btmp, &g_nvme_bdevs, link) { - if (btmp == nbdev) { - if (nbdev->nvme_ctrlr) { - return nbdev->nvme_ctrlr->ctrlr; - } else { - return NULL; - } - - } - } - return NULL; + return SPDK_CONTAINEROF(bdev, struct nvme_bdev, disk)->nvme_ctrlr->ctrlr; } SPDK_LOG_REGISTER_TRACE_FLAG("bdev_nvme", SPDK_TRACE_BDEV_NVME) diff --git a/lib/bdev/nvme/bdev_nvme.h b/lib/bdev/nvme/bdev_nvme.h index 262372e5e..edf77bacc 100644 --- a/lib/bdev/nvme/bdev_nvme.h +++ b/lib/bdev/nvme/bdev_nvme.h @@ -40,9 +40,11 @@ #define NVME_MAX_CONTROLLERS 1024 +struct spdk_bdev; + int spdk_bdev_nvme_create(struct spdk_nvme_transport_id *trid, const char *base_name, const char **names, size_t *count); -struct spdk_nvme_ctrlr *spdk_bdev_nvme_get_ctrlr(void *bdev); +struct spdk_nvme_ctrlr *spdk_bdev_nvme_get_ctrlr(struct spdk_bdev *bdev); #endif // SPDK_BDEV_NVME_H