nvme: add function to get ZNS zone size

Add a function to get the zone size of a zoned namespace.

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Change-Id: I89429fa2fd36307a8b34bdf91e3251c68596a48c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4791
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Community-CI: Broadcom CI
This commit is contained in:
Niklas Cassel 2020-10-20 09:29:01 +00:00 committed by Tomasz Zawadzki
parent 6511969c3b
commit 6abee9a205
3 changed files with 22 additions and 0 deletions

View File

@ -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 bytes, 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 bytes.
*/
uint64_t spdk_nvme_zns_ns_get_zone_size(struct spdk_nvme_ns *ns);
/**
* Get the Zoned Namespace Command Set Specific Identify Controller data
* as defined by the NVMe Zoned Namespace Command Set Specification.

View File

@ -39,6 +39,15 @@ spdk_nvme_zns_ns_get_data(struct spdk_nvme_ns *ns)
return ns->ctrlr->nsdata_zns[ns->id - 1];
}
uint64_t
spdk_nvme_zns_ns_get_zone_size(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);
}
const struct spdk_nvme_zns_ctrlr_data *
spdk_nvme_zns_ctrlr_get_data(struct spdk_nvme_ctrlr *ctrlr)
{

View File

@ -160,6 +160,7 @@
# public functions from nvme_zns.h
spdk_nvme_zns_ns_get_data;
spdk_nvme_zns_ns_get_zone_size;
spdk_nvme_zns_ctrlr_get_data;
spdk_nvme_zns_close_zone;
spdk_nvme_zns_finish_zone;