On Thu, 1 Feb 2024 at 06:37, Michael Tokarev <m...@tls.msk.ru> wrote: > > 30.01.2024 03:27, Stefan Hajnoczi wrote: > > The following expression is incorrect because blk_pread_nonzeroes() > > deals in units of bytes, not sectors: > > > > bytes = MIN(size - offset, BDRV_REQUEST_MAX_SECTORS) > > ^^^^^^^ > > > > BDRV_REQUEST_MAX_BYTES is the appropriate constant. > > > > Fixes: a4b15a8b9ef2 ("pflash: Only read non-zero parts of backend image") > > Cc: Xiang Zheng <zhengxia...@huawei.com> > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > > --- > > hw/block/block.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/hw/block/block.c b/hw/block/block.c > > index 9f52ee6e72..ff503002aa 100644 > > --- a/hw/block/block.c > > +++ b/hw/block/block.c > > @@ -30,7 +30,7 @@ static int blk_pread_nonzeroes(BlockBackend *blk, hwaddr > > size, void *buf) > > BlockDriverState *bs = blk_bs(blk); > > > > for (;;) { > > - bytes = MIN(size - offset, BDRV_REQUEST_MAX_SECTORS); > > + bytes = MIN(size - offset, BDRV_REQUEST_MAX_BYTES); > > Hmm. This smells like a -stable material, but you know better not > to Cc: qemu-stable@ for unrelated stuff... Is it not for stable?
This is not a user-visible bug. The code still works with the smaller MAX_SECTORS value thanks to the loop. It doesn't hurt to include it in -stable but I also think it doesn't help :-). It's just an inconsistency in the code. Stefan