Commit 21bff991 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

bdev/ocssd: Get spdk_nvme_ctrlr from not nvme_bdev_ctrlr but spdk_nvme_ns in I/O paths



The following patches will cache and use spdk_nvme_ns pointer rather than
nvme_bdev_ns pointer in I/O paths. As a preparation, change a few cases
to get spdk_nvme_ctrlr pointer from spdk_nvme_ns.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ief5f01f85f46e2ad822af5b5abb13a14f28a0c6a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6834


Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 929a207b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -680,7 +680,7 @@ _bdev_ocssd_get_zone_info(struct ocssd_bdev *ocssd_bdev, struct nvme_bdev_ns *nv
	lba = zone_id + ocdev_io->zone_info.chunk_offset * zone_size;
	offset = bdev_ocssd_to_chunk_info_offset(ocssd_ns, lba);

	return spdk_nvme_ctrlr_cmd_get_log_page(nvme_ns->ctrlr->ctrlr,
	return spdk_nvme_ctrlr_cmd_get_log_page(spdk_nvme_ns_get_ctrlr(nvme_ns->ns),
						SPDK_OCSSD_LOG_CHUNK_INFO,
						spdk_nvme_ns_get_id(nvme_ns->ns),
						&ocdev_io->zone_info.chunk_info,
@@ -1173,13 +1173,15 @@ bdev_occsd_init_zone_cb(void *ctx, const struct spdk_nvme_cpl *cpl)
static int
bdev_ocssd_init_zone(struct bdev_ocssd_create_ctx *create_ctx)
{
	struct spdk_nvme_ns *ns = create_ctx->nvme_ns->ns;

	create_ctx->num_chunks = spdk_min(create_ctx->end_chunk_offset - create_ctx->chunk_offset,
					  OCSSD_BDEV_CHUNK_INFO_COUNT);
	assert(create_ctx->num_chunks > 0);

	return spdk_nvme_ctrlr_cmd_get_log_page(create_ctx->nvme_ns->ctrlr->ctrlr,
	return spdk_nvme_ctrlr_cmd_get_log_page(spdk_nvme_ns_get_ctrlr(ns),
						SPDK_OCSSD_LOG_CHUNK_INFO,
						spdk_nvme_ns_get_id(create_ctx->nvme_ns->ns),
						spdk_nvme_ns_get_id(ns),
						&create_ctx->chunk_info,
						sizeof(create_ctx->chunk_info[0]) *
						create_ctx->num_chunks,
+8 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ struct spdk_nvme_qpair {

struct spdk_nvme_ns {
	uint32_t nsid;
	struct spdk_nvme_ctrlr *ctrlr;
};

struct spdk_nvme_ctrlr {
@@ -156,6 +157,7 @@ create_controller(const struct spdk_nvme_transport_id *trid, uint32_t ns_count,

	for (nsid = 0; nsid < ns_count; ++nsid) {
		ctrlr->ns[nsid].nsid = nsid + 1;
		ctrlr->ns[nsid].ctrlr = ctrlr;
	}

	ctrlr->geometry = *geo;
@@ -282,6 +284,12 @@ spdk_nvme_ns_get_id(struct spdk_nvme_ns *ns)
	return ns->nsid;
}

struct spdk_nvme_ctrlr *
spdk_nvme_ns_get_ctrlr(struct spdk_nvme_ns *ns)
{
	return ns->ctrlr;
}

struct spdk_nvme_ns *
spdk_nvme_ctrlr_get_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid)
{