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

bdev/zone: add support for max zone append size



Add support in bdev_zone.h for getting the maximum zone append data
transfer size.

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


Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent 20a01a04
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -361,6 +361,11 @@ struct spdk_bdev {
	 */
	uint64_t zone_size;

	/**
	 * Maximum zone append data transfer size (in blocks).
	 */
	uint32_t max_zone_append_size;

	/**
	 * Maximum number of open zones.
	 */
+10 −0
Original line number Diff line number Diff line
@@ -84,6 +84,16 @@ struct spdk_bdev_zone_info {
 */
uint64_t spdk_bdev_get_zone_size(const struct spdk_bdev *bdev);

/**
 * Get device maximum zone append data transfer size in logical blocks.
 *
 * If this value is 0, there is no limit.
 *
 * \param bdev Block device to query.
 * \return Maximum zone append data transfer size for this zoned device in logical blocks.
 */
uint32_t spdk_bdev_get_max_zone_append_size(const struct spdk_bdev *bdev);

/**
 * Get device maximum number of open zones.
 *
+6 −0
Original line number Diff line number Diff line
@@ -44,6 +44,12 @@ spdk_bdev_get_zone_size(const struct spdk_bdev *bdev)
	return bdev->zone_size;
}

uint32_t
spdk_bdev_get_max_zone_append_size(const struct spdk_bdev *bdev)
{
	return bdev->max_zone_append_size;
}

uint32_t
spdk_bdev_get_max_open_zones(const struct spdk_bdev *bdev)
{
+1 −0
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@

	# Public functions in bdev_zone.h
	spdk_bdev_get_zone_size;
	spdk_bdev_get_max_zone_append_size;
	spdk_bdev_get_max_open_zones;
	spdk_bdev_get_max_active_zones;
	spdk_bdev_get_optimal_open_zones;
+3 −0
Original line number Diff line number Diff line
@@ -1305,6 +1305,9 @@ bdev_ocssd_create_bdev(const char *ctrlr_name, const char *bdev_name, uint32_t n
	nvme_bdev->disk.blockcnt = geometry->num_grp * geometry->num_pu *
				   geometry->num_chk * geometry->clba;
	nvme_bdev->disk.zone_size = geometry->clba;
	/* Since zone appends are emulated using writes, use max io xfer size (but in blocks) */
	nvme_bdev->disk.max_zone_append_size = spdk_nvme_ns_get_max_io_xfer_size(ns) /
					       spdk_nvme_ns_get_extended_sector_size(ns);
	nvme_bdev->disk.max_open_zones = geometry->maxoc;
	nvme_bdev->disk.optimal_open_zones = geometry->num_grp * geometry->num_pu;
	nvme_bdev->disk.write_unit_size = geometry->ws_opt;
Loading