The zone-size field in BlockLimits is currently uint32_t, capping expressible zone sizes at 4 GiB. Real zoned-device protocols like NVMe ZNS allow larger zones. Widen BlockLimits.zone_size to uint64_t to match.
Signed-off-by: Sam Li <[email protected]> Reviewed-by: Niklas Cassel <[email protected]> --- block/file-posix.c | 2 +- include/block/block_int-common.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/block/file-posix.c b/block/file-posix.c index 3c985da94f..ddb159c58b 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -3600,7 +3600,7 @@ raw_co_zone_append(BlockDriverState *bs, if (*offset & zone_size_mask) { error_report("sector offset %" PRId64 " is not aligned to zone size " - "%" PRId32 "", *offset / 512, bs->bl.zone_size / 512); + "%" PRId64 "", *offset / 512, bs->bl.zone_size / 512); return -EINVAL; } diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h index 147c08155f..7571ed9968 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -901,7 +901,7 @@ typedef struct BlockLimits { BlockZoneModel zoned; /* zone size expressed in bytes */ - uint32_t zone_size; + uint64_t zone_size; /* total number of zones */ uint32_t nr_zones; -- 2.53.0
