[libvirt PATCH v2 07/24] qemu_snapshot: use virDomainDiskByName while updating domain def

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When creating external snapshot this function is called only when the VM
is not running so there is only one definition to care about. However,
it will be used by external snapshot revert code for active and inactive
definition and they may be different if a disk was (un)plugged only for
the active or inactive definition.

The current code would crash so use virDomainDiskByName() to get the
correct disk from the domain definition based on the disk name and make
sure it exists.

Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx>
Reviewed-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/qemu/qemu_snapshot.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
index 72a0f71d4f..8e1eb21b5d 100644
--- a/src/qemu/qemu_snapshot.c
+++ b/src/qemu/qemu_snapshot.c
@@ -152,11 +152,14 @@ qemuSnapshotDomainDefUpdateDisk(virDomainDef *domdef,
     for (i = 0; i < snapdef->ndisks; i++) {
         g_autoptr(virStorageSource) newsrc = NULL;
         virDomainSnapshotDiskDef *snapdisk = &(snapdef->disks[i]);
-        virDomainDiskDef *defdisk = domdef->disks[i];
+        virDomainDiskDef *defdisk = virDomainDiskByName(domdef, snapdisk->name, false);
 
         if (snapdisk->snapshot != VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL)
             continue;
 
+        if (!defdisk)
+            continue;
+
         if (!(newsrc = virStorageSourceCopy(snapdisk->src, false)))
             return -1;
 
-- 
2.41.0




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux