]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Fetch/save the default SCSI controller model during hotplug
authorJohn Ferlan <jferlan@redhat.com>
Tue, 30 Jan 2018 22:29:48 +0000 (17:29 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 31 Jan 2018 16:32:04 +0000 (11:32 -0500)
If we're going to add a controller to the domain, let's set the
default SCSI model value if we cannot find another SCSI controller
already present.

NB: Requires updating the live output test data since the model
will now be formatted.

src/qemu/qemu_hotplug.c
tests/qemuhotplugtestdomains/qemuhotplug-base-with-scsi-controller-live.xml
tests/qemuhotplugtestdomains/qemuhotplug-base-without-scsi-controller-live+disk-scsi-2.xml

index 6b245bd6ac6b51727c4e617562aed5ad9a1b46e4..fccbc29a00706954ece16644f2f67767e57a951c 100644 (file)
@@ -587,6 +587,7 @@ qemuDomainFindOrCreateSCSIDiskController(virQEMUDriverPtr driver,
 {
     size_t i;
     virDomainControllerDefPtr cont;
+    qemuDomainObjPrivatePtr priv = vm->privateData;
     int model = -1;
 
     for (i = 0; i < vm->def->ncontrollers; i++) {
@@ -615,10 +616,13 @@ qemuDomainFindOrCreateSCSIDiskController(virQEMUDriverPtr driver,
         return NULL;
     cont->type = VIR_DOMAIN_CONTROLLER_TYPE_SCSI;
     cont->idx = controller;
-    cont->model = model;
+    if (model == -1)
+        cont->model = qemuDomainGetSCSIControllerModel(vm->def, cont, priv->qemuCaps);
+    else
+        cont->model = model;
 
     VIR_INFO("No SCSI controller present, hotplugging one model=%s",
-             virDomainControllerModelSCSITypeToString(model));
+             virDomainControllerModelSCSITypeToString(cont->model));
     if (qemuDomainAttachControllerDevice(driver, vm, cont) < 0) {
         VIR_FREE(cont);
         return NULL;
index 63eb7700783e3a86f96478fe21de5423d77217bc..d23d3d483e9e1ad93784598b67cf7d1f59d7a468 100644 (file)
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
-    <controller type='scsi' index='0'>
+    <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
     </controller>
-    <controller type='scsi' index='1'>
+    <controller type='scsi' index='1' model='virtio-scsi'>
       <alias name='scsi1'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
     </controller>
-    <controller type='scsi' index='2'>
+    <controller type='scsi' index='2' model='virtio-scsi'>
       <alias name='scsi2'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
     </controller>
-    <controller type='scsi' index='3'>
+    <controller type='scsi' index='3' model='virtio-scsi'>
       <alias name='scsi3'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
     </controller>
index c12d18f7162e6784d00e61d168705a676f4741dd..cceb678bb9dd987020540b0232f674940a4a6c7f 100644 (file)
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
-    <controller type='scsi' index='0'>
+    <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
     </controller>
-    <controller type='scsi' index='1'>
+    <controller type='scsi' index='1' model='virtio-scsi'>
       <alias name='scsi1'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
     </controller>
-    <controller type='scsi' index='2'>
+    <controller type='scsi' index='2' model='virtio-scsi'>
       <alias name='scsi2'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
     </controller>
-    <controller type='scsi' index='3'>
+    <controller type='scsi' index='3' model='virtio-scsi'>
       <alias name='scsi3'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
     </controller>