]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: hotplug: Check duplicate disk serial/wwn on hotplug too
authorPeter Krempa <pkrempa@redhat.com>
Thu, 4 Feb 2016 12:39:15 +0000 (13:39 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 8 Feb 2016 08:08:38 +0000 (09:08 +0100)
We do the check on VM start, but the user could still hotplug a disk
with a conflicting serial or WWN. Reuse the checker function to fix the
issue.

src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms
src/qemu/qemu_hotplug.c

index 8f74ac5c023adb2671927621908f436efd87ff72..e7d4ac90fa766864125f1e20c20896903d880718 100644 (file)
@@ -23988,7 +23988,7 @@ virDomainDefNeedsPlacementAdvice(virDomainDefPtr def)
 }
 
 
-static int
+int
 virDomainDiskDefCheckDuplicateInfo(virDomainDiskDefPtr a,
                                    virDomainDiskDefPtr b)
 {
index 83a080b4a4b71bb5d2ac71fc106f8641868d19fe..aa1908efc4363e5348562d0f50519842ec6360f7 100644 (file)
@@ -3153,6 +3153,9 @@ virDomainParseMemory(const char *xpath,
 bool virDomainDefNeedsPlacementAdvice(virDomainDefPtr def)
     ATTRIBUTE_NONNULL(1);
 
+int virDomainDiskDefCheckDuplicateInfo(virDomainDiskDefPtr a,
+                                       virDomainDiskDefPtr b)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
 int virDomainDefCheckDuplicateDiskInfo(virDomainDefPtr def)
     ATTRIBUTE_NONNULL(1);
 
index 276aacfe5e601879c68a4718234bb378e69fceff..23a15a4e25b7a1a48a6f5f1484615e619d1b9574 100644 (file)
@@ -257,6 +257,7 @@ virDomainDiskByName;
 virDomainDiskCacheTypeFromString;
 virDomainDiskCacheTypeToString;
 virDomainDiskDefAssignAddress;
+virDomainDiskDefCheckDuplicateInfo;
 virDomainDiskDefDstDuplicates;
 virDomainDiskDefForeachPath;
 virDomainDiskDefFree;
index 2e5cf64901347848d425263be5f57e7d3689da66..18a5a12d2af960e44d3a0aed085d551f90fb68f0 100644 (file)
@@ -799,6 +799,9 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn,
                                _("target %s already exists"), disk->dst);
                 goto cleanup;
             }
+
+            if (virDomainDiskDefCheckDuplicateInfo(vm->def->disks[i], disk) < 0)
+                goto cleanup;
         }
 
         switch ((virDomainDiskBus) disk->bus) {