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(a)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.
Ah thanks, I knew there had to be such a macro, but could not find it ;)
And should we document it somewhere?
In v2 I've added a short blob about the rounding in virStorageVolResize API
doc, hopefully that's a good place for that.
Christophe