On Thu, Mar 11, 2021 at 12:39:15AM +0900, Akihiko Odaki wrote: > @@ -1586,6 +1589,7 @@ out: > } > } > > +G_GNUC_UNUSED Why isn't translate_err() used in the F_PUNCHHOLE case below? If you really want to avoid using it on macOS, please add a #if with the necessary conditions here so it's clear when this translate_err() is needed. > @@ -514,7 +515,8 @@ static int raw_probe_blocksizes(BlockDriverState *bs, BlockSizes *bsz) > return ret; > } > > - if (!QEMU_IS_ALIGNED(s->offset, MAX(bsz->log, bsz->phys))) { > + size = MAX(bsz->log, bsz->phys); > + if (size && !QEMU_IS_ALIGNED(s->offset, size)) { > return -ENOTSUP; > } > This patch changes the semantics of bdrv_probe_blocksizes(). It used to return -ENOTSUP when phys/log weren't available. Now it returns 0 and the fields are 0. Please update the bdrv_probe_blocksizes doc comment in include/block/block_int.h to mention phys and log, as well as that fields can be set to 0 (or -1 in the case of discard_granularity).