]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: snapshot: Don't mark all block disks for metadata reuse
authorPeter Krempa <pkrempa@redhat.com>
Mon, 16 Jun 2014 12:05:07 +0000 (14:05 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 16 Jun 2014 15:22:05 +0000 (17:22 +0200)
For block devices used as snapshot source the new snapshot code would
set the reuse flag. This inhibits to take snapshot without specially
preparing the block image before taking the snapshot.

Fortunately this is not a regression as only the new way of specifying
snapshot source is affected.

For the followin snapshot XML:
 <domainsnapshot>
   <disks>
     <disk name='vda' type='block'>
       <driver type='qcow2'/>
       <source dev="/dev/andariel/testsnap" />
     </disk>
   </disks>
 </domainsnapshot>

You'd get:
error: internal error: unable to execute QEMU command 'transaction': Image is not in qcow2 format

After this patch the snapshot is created successfully.

src/qemu/qemu_driver.c

index 7bf20207238c42b4393dd1da06a5d93af3ff896f..7ac7aa2d723a12f8d469bb4549c26d8b25222c6e 100644 (file)
@@ -12885,13 +12885,11 @@ qemuDomainSnapshotCreateSingleDiskActive(virQEMUDriverPtr driver,
 
     switch ((virStorageType)snap->src->type) {
     case VIR_STORAGE_TYPE_BLOCK:
-        reuse = true;
-        /* fallthrough */
     case VIR_STORAGE_TYPE_FILE:
 
         /* create the stub file and set selinux labels; manipulate disk in
          * place, in a way that can be reverted on failure. */
-        if (!reuse) {
+        if (!reuse && snap->src->type != VIR_STORAGE_TYPE_BLOCK) {
             fd = qemuOpenFile(driver, vm, source, O_WRONLY | O_TRUNC | O_CREAT,
                               &need_unlink, NULL);
             if (fd < 0)