diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index bf7daddda..550a335fd 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1213,6 +1213,8 @@ create_bdevs_cb(void *cb_arg, size_t count, int rc) if (ctx->cb_fn) { ctx->cb_fn(ctx->cb_ctx, count, rc); } + + free(ctx); } static void @@ -1265,6 +1267,8 @@ connect_attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid, ctx = SPDK_CONTAINEROF(user_opts, struct nvme_async_probe_ctx, opts); + spdk_poller_unregister(&ctx->poller); + rc = create_ctrlr(ctrlr, ctx->base_name, &ctx->trid, ctx->prchk_flags); if (rc) { SPDK_ERRLOG("Failed to create new device\n"); @@ -1283,15 +1287,9 @@ static int bdev_nvme_async_poll(void *arg) { struct nvme_async_probe_ctx *ctx = arg; - int done; - done = spdk_nvme_probe_poll_async(ctx->probe_ctx); - /* retry again */ - if (done == -EAGAIN) { - return 1; - } - spdk_poller_unregister(&ctx->poller); - free(ctx); + spdk_nvme_probe_poll_async(ctx->probe_ctx); + return 1; }