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

Daniel P. Berrange berrange at redhat.com
Tue May 14 13:59:01 UTC 2013


On Tue, May 14, 2013 at 09:56:44PM +0800, Osier Yang wrote:
> On 14/05/13 21: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;
> 
> There is macro VIR_DIV_UP for the purpose.  And should we document
> it somewhere?  I guess one will file bug like "specify 1 for vol-resize, but
> the result is 512".

Actually VIR_DIV_UP isn't what we're wanting todo here. We're just
rounding-up, not scaling. We could add a VIR_ROUND_UP macro though
which just encapsulates this logic


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list