[libvirt] [PATCH 3/4] conf: Use existing SCSI hostdev model to create new

Ján Tomko jtomko at redhat.com
Wed Dec 20 12:52:16 UTC 2017


On Wed, Dec 06, 2017 at 08:08:05AM -0500, John Ferlan wrote:
>In virDomainDefMaybeAddHostdevSCSIcontroller when we add a new
>controller because someone neglected to add one or we're adding
>one because the existing one is full, we should copy over the
>model number from the existing controller since whatever we
>create should at least have the same characteristics as the one
>we cannot use because it's full.
>
>NB: This affects the existing hostdev-scsi-autogen-address test
>which would add a default ('lsi') SCSI controller for the various
>scsi_host's that would create a controller for the hostdev.
>

Yet the change adds 'virtio-scsi'.

>Signed-off-by: John Ferlan <jferlan at redhat.com>
>---
> src/conf/domain_conf.c                                    | 13 ++++++++++++-
> tests/qemuxml2xmloutdata/hostdev-scsi-autogen-address.xml |  2 +-
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>index 66e21c4bd..61b4a0075 100644
>--- a/src/conf/domain_conf.c
>+++ b/src/conf/domain_conf.c
>@@ -17689,12 +17689,22 @@ virDomainDefMaybeAddHostdevSCSIcontroller(virDomainDefPtr def)
>     size_t i;
>     int maxController = -1;
>     virDomainHostdevDefPtr hostdev;
>+    virDomainControllerModelSCSI model = -1;

This declaration can be moved inside the if to reduce its scope. (I'm
with Andrea on this [0])

>+    virDomainControllerModelSCSI newModel = -1;
>
>     for (i = 0; i < def->nhostdevs; i++) {
>         hostdev = def->hostdevs[i];
>         if (virHostdevIsSCSIDevice(hostdev) &&
>             (int)hostdev->info->addr.drive.controller > maxController) {
>             maxController = hostdev->info->addr.drive.controller;
>+            /* We may be creating a new controller because this one is full.
>+             * So let's grab the model from it and update the model we're
>+             * going to add as long as this one isn't undefined. The premise
>+             * being keeping the same controller model for all SCSI hostdevs. */
>+            model = virDomainDeviceFindControllerModel(def, hostdev->info,
>+                                                       VIR_DOMAIN_CONTROLLER_TYPE_SCSI);
>+            if (model != -1)
>+                newModel = model;
>         }
>     }
>

ACK

Jan

[0] https://www.redhat.com/archives/libvir-list/2017-December/msg00563.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20171220/cd1fdafb/attachment-0001.sig>


More information about the libvir-list mailing list