[libvirt] [PATCH] storage: Ensure 'qemu-img resize' size arg is a 512 multiple

Peter Krempa pkrempa at redhat.com
Tue May 14 14:01:10 UTC 2013


On 05/14/13 15:50, Christophe Fergeau wrote:
> qemu-img resize will fail with "The new size must be a multiple of 512"
> if libvirt doesn't round it first.
> This fixes rhbz#951495
>
> Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
> ---
>   src/storage/storage_backend_fs.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
> index 9b83e57..99973b0 100644
> --- a/src/storage/storage_backend_fs.c
> +++ b/src/storage/storage_backend_fs.c
> @@ -1219,6 +1219,10 @@ virStorageBackendFilesystemResizeQemuImg(const char *path,
>           return -1;
>       }
>
> +    /* Round capacity up to the closest 512 multiple as qemu-img errors out
> +     * on sizes which are not a multiple of 512 */
> +    capacity = (capacity + 511) / 512 * 512;

Please use the macro introduced specifically for this purpose for the 
first part.

/* divide value by size, rounding up */
# define VIR_DIV_UP(value, size) (((value) + (size) - 1) / (size))

defined in internal.h


> +
>       cmd = virCommandNew(img_tool);
>       virCommandAddArgList(cmd, "resize", path, NULL);
>       virCommandAddArgFormat(cmd, "%llu", capacity);
>

Peter




More information about the libvir-list mailing list