Commit 9a800c38 authored by Niklas Cassel's avatar Niklas Cassel Committed by Tomasz Zawadzki
Browse files

nvme: add spdk_nvme_zns_ns_get_zone_size_sectors()



Sometimes it is more optimal to get the zone size in number
of sectors, instead of in number of bytes.

Therefore, add a new spdk_nvme_zns_ns_get_zone_size_sectors()
function to get zone size in number of sectors.

Signed-off-by: default avatarNiklas Cassel <niklas.cassel@wdc.com>
Change-Id: I0fe67e00a3d74dd27acfc895ae97448d995b89a3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6416


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent 8f5b48f8
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -60,6 +60,18 @@ extern "C" {
 */
const struct spdk_nvme_zns_ns_data *spdk_nvme_zns_ns_get_data(struct spdk_nvme_ns *ns);

/**
 * Get the zone size, in number of sectors, of the given namespace.
 *
 * This function is thread safe and can be called at any point while the controller
 * is attached to the SPDK NVMe driver.
 *
 * \param ns Namespace to query.
 *
 * \return the zone size of the given namespace in number of sectors.
 */
uint64_t spdk_nvme_zns_ns_get_zone_size_sectors(struct spdk_nvme_ns *ns);

/**
 * Get the zone size, in bytes, of the given namespace.
 *
+8 −2
Original line number Diff line number Diff line
@@ -40,12 +40,18 @@ spdk_nvme_zns_ns_get_data(struct spdk_nvme_ns *ns)
}

uint64_t
spdk_nvme_zns_ns_get_zone_size(struct spdk_nvme_ns *ns)
spdk_nvme_zns_ns_get_zone_size_sectors(struct spdk_nvme_ns *ns)
{
	const struct spdk_nvme_zns_ns_data *nsdata_zns = spdk_nvme_zns_ns_get_data(ns);
	const struct spdk_nvme_ns_data *nsdata = spdk_nvme_ns_get_data(ns);

	return nsdata_zns->lbafe[nsdata->flbas.format].zsze * spdk_nvme_ns_get_sector_size(ns);
	return nsdata_zns->lbafe[nsdata->flbas.format].zsze;
}

uint64_t
spdk_nvme_zns_ns_get_zone_size(struct spdk_nvme_ns *ns)
{
	return spdk_nvme_zns_ns_get_zone_size_sectors(ns) * spdk_nvme_ns_get_sector_size(ns);
}

uint64_t
+1 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@

	# public functions from nvme_zns.h
	spdk_nvme_zns_ns_get_data;
	spdk_nvme_zns_ns_get_zone_size_sectors;
	spdk_nvme_zns_ns_get_zone_size;
	spdk_nvme_zns_ns_get_num_zones;
	spdk_nvme_zns_ctrlr_get_data;