diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 4031266a9..41fb4955f 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1191,27 +1191,16 @@ spdk_bdev_nvme_set_hotplug(bool enabled, uint64_t period_us, spdk_msg_fn cb, voi } static int -bdev_nvme_create_and_get_bdev_names(struct spdk_nvme_ctrlr *ctrlr, - const char *base_name, - const char **names, size_t *count, - const struct spdk_nvme_transport_id *trid, - uint32_t prchk_flags) +bdev_nvme_create_bdevs(const char **names, size_t *count, + const struct spdk_nvme_transport_id *trid) { struct nvme_bdev_ctrlr *nvme_bdev_ctrlr; struct nvme_bdev *nvme_bdev; uint32_t i, nsid; size_t j; - if (create_ctrlr(ctrlr, base_name, trid, prchk_flags)) { - SPDK_ERRLOG("Failed to create new device\n"); - return -1; - } - nvme_bdev_ctrlr = nvme_bdev_ctrlr_get(trid); - if (!nvme_bdev_ctrlr) { - SPDK_ERRLOG("Failed to find new NVMe controller\n"); - return -1; - } + assert(nvme_bdev_ctrlr != NULL); nvme_ctrlr_create_bdevs(nvme_bdev_ctrlr); @@ -1264,12 +1253,19 @@ connect_attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid, int rc; ctx = SPDK_CONTAINEROF(user_opts, struct nvme_async_probe_ctx, opts); - rc = bdev_nvme_create_and_get_bdev_names(ctrlr, - ctx->base_name, - ctx->names, ctx->count, - &ctx->trid, - ctx->prchk_flags); + rc = create_ctrlr(ctrlr, ctx->base_name, &ctx->trid, ctx->prchk_flags); + if (rc) { + SPDK_ERRLOG("Failed to create new device\n"); + goto end; + } + + rc = bdev_nvme_create_bdevs(ctx->names, ctx->count, &ctx->trid); + if (rc) { + SPDK_ERRLOG("Failed to create bdevs\n"); + } + +end: if (ctx->cb_fn) { ctx->cb_fn(ctx->cb_ctx, rc); }