On 8/26/26 05:57, Niklas Cassel wrote: > The max_append_sectors field of virtio_blk_zoned_characteristics must be > set by the device to the largest zone append request that can be issued > to it, and a value of zero tells the guest driver that zone append is not > supported at all (virtio 1.4, 5.2.5.2). Linux refuses to attach a zoned > device that reports zero. > > We pass BlockLimits.max_append_sectors straight through, which makes that > field mean "zone append unsupported" when it is unset, rather than "this > backend imposes no limit of its own". Only a backend that has a limit of > its own has anything to put there. > > Derive the value instead. A backend limit is honoured when there is one, > and otherwise the request is bounded by the zone size, since an append > cannot cross a zone boundary, and by the largest request the block layer > can carry. The result cannot be zero. > > A backend that carries out an append itself, rather than passing it to a > device that has a limit of its own, is the one that knows how large a > request its implementation can take, so it reports that in > BlockLimits.max_append_sectors and this does not have to guess at it. > > Signed-off-by: Niklas Cassel <[email protected]>
Reviewed-by: Damien Le Moal <[email protected]> -- Damien Le Moal Western Digital Research
