From nobody Thu May 15 01:44:33 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151735353845626.94313309383699; Tue, 30 Jan 2018 15:05:38 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 499DD28226; Tue, 30 Jan 2018 23:05:36 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1E353600D3; Tue, 30 Jan 2018 23:05:36 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DC8BA18033DD; Tue, 30 Jan 2018 23:05:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0UN5FNn006217 for ; Tue, 30 Jan 2018 18:05:15 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6800B5C20B; Tue, 30 Jan 2018 23:05:15 +0000 (UTC) Received: from unknown54ee7586bd10.attlocal.net.com (ovpn-116-232.phx2.redhat.com [10.3.116.232]) by smtp.corp.redhat.com (Postfix) with ESMTP id 24DBA5C25E for ; Tue, 30 Jan 2018 23:05:14 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Tue, 30 Jan 2018 18:04:57 -0500 Message-Id: <20180130230503.3820-4-jferlan@redhat.com> In-Reply-To: <20180130230503.3820-1-jferlan@redhat.com> References: <20180130230503.3820-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/9] qemu: Introduce qemuDomainFindSCSIControllerModel X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 30 Jan 2018 23:05:37 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Rather than repeat multiple steps in order to find the SCSI controller model, let's combine them into one helper that will return either the model from the definition or the default model based on the capabilities. This patch adds an extra check/error that the controller that's being found actually exists. This just clarifies that the error was because the controller doesn't exist rather than the more generic error that we were unable to determine the model from qemuDomainSetSCSIControllerModel when a -1 was passed in and the capabilities were unable to find one. Signed-off-by: John Ferlan --- src/qemu/qemu_alias.c | 12 ++++-------- src/qemu/qemu_command.c | 17 +++++------------ src/qemu/qemu_domain_address.c | 31 +++++++++++++++++++++++++++++++ src/qemu/qemu_domain_address.h | 4 ++++ 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c index ed96f9f4c..ed3af04de 100644 --- a/src/qemu/qemu_alias.c +++ b/src/qemu/qemu_alias.c @@ -190,14 +190,10 @@ qemuAssignDeviceDiskAlias(virDomainDefPtr def, =20 if (disk->info.type =3D=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) { if (disk->bus =3D=3D VIR_DOMAIN_DISK_BUS_SCSI) { - virDomainControllerDefPtr cont; - - cont =3D virDomainDeviceFindSCSIController(def, &disk->info); - if (cont) - controllerModel =3D cont->model; - - if ((qemuDomainSetSCSIControllerModel(def, qemuCaps, - &controllerModel)) < 0) + controllerModel =3D qemuDomainFindSCSIControllerModel(def, + &disk->inf= o, + qemuCaps); + if (controllerModel < 0) return -1; } =20 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 113a2919b..32ff385cf 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1957,7 +1957,6 @@ qemuBuildDriveDevStr(const virDomainDef *def, virQEMUCapsPtr qemuCaps) { virBuffer opt =3D VIR_BUFFER_INITIALIZER; - virDomainControllerDefPtr cont; const char *bus =3D virDomainDiskQEMUBusTypeToString(disk->bus); const char *contAlias; char *drivealias; @@ -2043,11 +2042,9 @@ qemuBuildDriveDevStr(const virDomainDef *def, goto error; } =20 - cont =3D virDomainDeviceFindSCSIController(def, &disk->info); - if (cont) - controllerModel =3D cont->model; - if ((qemuDomainSetSCSIControllerModel(def, qemuCaps, - &controllerModel)) < 0) + controllerModel =3D qemuDomainFindSCSIControllerModel(def, &disk->= info, + qemuCaps); + if (controllerModel < 0) goto error; =20 if (disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_LUN) { @@ -5143,16 +5140,12 @@ qemuBuildSCSIHostdevDevStr(const virDomainDef *def, virQEMUCapsPtr qemuCaps) { virBuffer buf =3D VIR_BUFFER_INITIALIZER; - virDomainControllerDefPtr cont; int model =3D -1; char *driveAlias; const char *contAlias; =20 - cont =3D virDomainDeviceFindSCSIController(def, dev->info); - if (cont) - model =3D cont->model; - - if (qemuDomainSetSCSIControllerModel(def, qemuCaps, &model) < 0) + model =3D qemuDomainFindSCSIControllerModel(def, dev->info, qemuCaps); + if (model < 0) goto error; =20 if (model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC) { diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 86fe7ad11..74f7df205 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -74,6 +74,37 @@ qemuDomainSetSCSIControllerModel(const virDomainDef *def, } =20 =20 +/** + * @def: Domain definition + * @info: Domain device info + * @qemuCaps: QEMU capabilities + * + * Using the device info, find the controller related to the + * device by index and use that controller to return the model. + * + * Returns the model if found, -1 if not with an error message set + */ +int +qemuDomainFindSCSIControllerModel(const virDomainDef *def, + virDomainDeviceInfoPtr info, + virQEMUCapsPtr qemuCaps) +{ + virDomainControllerDefPtr cont; + int model; + + if (!(cont =3D virDomainDeviceFindSCSIController(def, info))) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unable to find a SCSI controller for idx=3D%d"), + info->addr.drive.controller); + return -1; + } + + model =3D cont->model; + ignore_value(qemuDomainSetSCSIControllerModel(def, qemuCaps, &model)); + return model; +} + + static int qemuDomainAssignVirtioSerialAddresses(virDomainDefPtr def) { diff --git a/src/qemu/qemu_domain_address.h b/src/qemu/qemu_domain_address.h index e951a4c88..8a4346892 100644 --- a/src/qemu/qemu_domain_address.h +++ b/src/qemu/qemu_domain_address.h @@ -32,6 +32,10 @@ int qemuDomainSetSCSIControllerModel(const virDomainDef = *def, virQEMUCapsPtr qemuCaps, int *model); =20 +int qemuDomainFindSCSIControllerModel(const virDomainDef *def, + virDomainDeviceInfoPtr info, + virQEMUCapsPtr qemuCaps); + int qemuDomainAssignAddresses(virDomainDefPtr def, virQEMUCapsPtr qemuCaps, virQEMUDriverPtr driver, --=20 2.13.6 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list