Commit dcc2a96a authored by Ben Walker's avatar Ben Walker Committed by Tomasz Zawadzki
Browse files

bdev/nvme: Remove async callbacks for populating namespaces



Only OCSSD needed this.

Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Change-Id: I41ee6a08fb4b87a710ca8399545abb9a9622c5be
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9330


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent 9a29520b
Loading
Loading
Loading
Loading
+22 −22
Original line number Diff line number Diff line
@@ -1702,12 +1702,26 @@ nvme_ctrlr_populate_namespace(struct nvme_ctrlr *nvme_ctrlr, struct nvme_ns *nvm
	}

	rc = nvme_bdev_create(nvme_ctrlr, nvme_ns);

done:
	nvme_ctrlr_populate_namespace_done(ctx, nvme_ns, rc);
	if (rc == 0) {
		pthread_mutex_lock(&nvme_ctrlr->mutex);
		nvme_ctrlr->ref++;
		pthread_mutex_unlock(&nvme_ctrlr->mutex);
	} else {
		memset(nvme_ns, 0, sizeof(*nvme_ns));
	}

	if (ctx) {
		ctx->populates_in_progress--;
		if (ctx->populates_in_progress == 0) {
			nvme_ctrlr_populate_namespaces_done(nvme_ctrlr, ctx);
		}
	}
}

static void
nvme_ctrlr_depopulate_namespace(struct nvme_ctrlr *ctrlr, struct nvme_ns *nvme_ns)
nvme_ctrlr_depopulate_namespace(struct nvme_ctrlr *nvme_ctrlr, struct nvme_ns *nvme_ns)
{
	struct nvme_bdev *bdev;

@@ -1716,31 +1730,17 @@ nvme_ctrlr_depopulate_namespace(struct nvme_ctrlr *ctrlr, struct nvme_ns *nvme_n
		spdk_bdev_unregister(&bdev->disk, NULL, NULL);
	}

	nvme_ctrlr_depopulate_namespace_done(nvme_ns);
}

void
nvme_ctrlr_populate_namespace_done(struct nvme_async_probe_ctx *ctx,
				   struct nvme_ns *nvme_ns, int rc)
{
	struct nvme_ctrlr *nvme_ctrlr = nvme_ns->ctrlr;
	pthread_mutex_lock(&nvme_ctrlr->mutex);

	assert(nvme_ctrlr != NULL);
	nvme_ns->populated = false;

	if (rc == 0) {
		pthread_mutex_lock(&nvme_ctrlr->mutex);
		nvme_ctrlr->ref++;
	if (nvme_ns->bdev != NULL) {
		pthread_mutex_unlock(&nvme_ctrlr->mutex);
	} else {
		memset(nvme_ns, 0, sizeof(*nvme_ns));
		return;
	}
	pthread_mutex_unlock(&nvme_ctrlr->mutex);

	if (ctx) {
		ctx->populates_in_progress--;
		if (ctx->populates_in_progress == 0) {
			nvme_ctrlr_populate_namespaces_done(nvme_ctrlr, ctx);
		}
	}
	nvme_ctrlr_release(nvme_ctrlr);
}

static void
+0 −20
Original line number Diff line number Diff line
@@ -195,26 +195,6 @@ nvme_ctrlr_release(struct nvme_ctrlr *nvme_ctrlr)
	nvme_ctrlr_unregister(nvme_ctrlr);
}

void
nvme_ctrlr_depopulate_namespace_done(struct nvme_ns *nvme_ns)
{
	struct nvme_ctrlr *nvme_ctrlr = nvme_ns->ctrlr;

	assert(nvme_ctrlr != NULL);

	pthread_mutex_lock(&nvme_ctrlr->mutex);

	nvme_ns->populated = false;

	if (nvme_ns->bdev != NULL) {
		pthread_mutex_unlock(&nvme_ctrlr->mutex);
		return;
	}
	pthread_mutex_unlock(&nvme_ctrlr->mutex);

	nvme_ctrlr_release(nvme_ctrlr);
}

int
bdev_nvme_create_bdev_channel_cb(void *io_device, void *ctx_buf)
{
+0 −4
Original line number Diff line number Diff line
@@ -174,10 +174,6 @@ struct nvme_bdev_channel {
	struct nvme_ctrlr_channel	*ctrlr_ch;
};

void nvme_ctrlr_populate_namespace_done(struct nvme_async_probe_ctx *ctx,
					struct nvme_ns *nvme_ns, int rc);
void nvme_ctrlr_depopulate_namespace_done(struct nvme_ns *nvme_ns);

struct nvme_ctrlr *nvme_ctrlr_get(const struct spdk_nvme_transport_id *trid);
struct nvme_ctrlr *nvme_ctrlr_get_by_name(const char *name);