]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage: Fix volume cloning for logical volume.
authorAtsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp>
Thu, 4 Apr 2013 05:15:06 +0000 (14:15 +0900)
committerJán Tomko <jtomko@redhat.com>
Thu, 4 Apr 2013 08:52:07 +0000 (10:52 +0200)
When creating a logical volume with virStorageVolCreateXMLFrom,
"qemu-img convert" is called internally if clonevol is a file volume.
Then, vol->target.format is used as output_fmt parameter but the
target.format of logical volumes is always 0 because logical volumes
haven't the volume format type element.

Fortunately, 0 was treated as RAW file format before commit f772b3d9,
so there was no problem. But now, 0 is treated as the type of none,
qemu-img fails with "Unknown file format 'none'".

This patch fixes this issue by treating output block devices as RAW
file format like for input block devices.

Signed-off-by: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp>
src/storage/storage_backend.c

index bb58d4a6177c90ed857a7b94b93d6107c8a3f6a9..2551f1f56f89d2cde3b0a2bda6f5428ef2cd94dd 100644 (file)
@@ -652,7 +652,12 @@ virStorageBackendCreateQemuImgCmd(virConnectPtr conn,
     unsigned long long int size_arg;
     bool preallocate = false;
 
-    const char *type = virStorageFileFormatTypeToString(vol->target.format);
+    /* Treat output block devices as 'raw' format */
+    const char *type =
+        virStorageFileFormatTypeToString(vol->type == VIR_STORAGE_VOL_BLOCK ?
+                                         VIR_STORAGE_FILE_RAW :
+                                         vol->target.format);
+
     const char *backingType = vol->backingStore.path ?
         virStorageFileFormatTypeToString(vol->backingStore.format) : NULL;