On 03/20/2018 12:36 PM, Kevin Wolf wrote:
> Images with a non-power-of-two block size are invalid and cannot be
> opened. Reject such block sizes when creating an image.
>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
> block/vhdx.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
Reviewed-by: Eric Blake <eblake@redhat.com>
> diff --git a/block/vhdx.c b/block/vhdx.c
> index f1b97f4b49..ca211a3196 100644
> --- a/block/vhdx.c
> +++ b/block/vhdx.c
> @@ -1877,6 +1877,10 @@ static int coroutine_fn vhdx_co_create(BlockdevCreateOptions *opts,
> error_setg_errno(errp, EINVAL, "Block size must be a multiple of 1 MB");
> return -EINVAL;
> }
> + if (!is_power_of_2(block_size)) {
> + error_setg(errp, "Block size must be a power of two");
> + return -EINVAL;
> + }
> if (block_size > VHDX_BLOCK_SIZE_MAX) {
> error_setg_errno(errp, EINVAL, "Block size must not exceed %d",
> VHDX_BLOCK_SIZE_MAX);
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org