From nobody Mon Feb 9 09:15:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1633621362; cv=none; d=zohomail.com; s=zohoarc; b=bYswwRgZ+6TLKhdql981MLrHczpzAKNSXF0QE6jJizhGLQNp7bE1+olPyWak1o7jii+t64jb+18sjZXXwpcpy1LTEGpRTHM6skjvSzjSwbQE7TOglB31/xeQVDRj7OLQaXRQnZOPCQj+SuBciaxZynkQ64NQQNy1UhESZii5N9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1633621362; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=c9J5I1ZM8y1gc0MIUlKXqSn0xBjlVfrojhaloE1yEB8=; b=ZzN2E+ZR+rBGAkVs5Di/b0oEalST0cdUlpfi94DwZ03l6kEjUxxFSrIihhXYEbJ9FtsyP4avL2UvrCIa1UzIFd7CZy7rsZRtK52zGL760pRo55aN6IsUbF/QmvdKQ2rqCf4MbHVOx3xqUlFFCT5X8l/ioi/LbNyccRMLWNYfIBw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1633621362903792.341548375019; Thu, 7 Oct 2021 08:42:42 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-148-0Bh2f2NAOUiO2sTz0dI49g-1; Thu, 07 Oct 2021 11:42:26 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3A1DC88C90C; Thu, 7 Oct 2021 15:32:16 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 17603A1D7; Thu, 7 Oct 2021 15:32:16 +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 C1D4C4EA37; Thu, 7 Oct 2021 15:32:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 197FL5Um024441 for ; Thu, 7 Oct 2021 11:21:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id E87255D6D5; Thu, 7 Oct 2021 15:21:05 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.40.208.5]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4CA0F5D6BA for ; Thu, 7 Oct 2021 15:21:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1633621361; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=c9J5I1ZM8y1gc0MIUlKXqSn0xBjlVfrojhaloE1yEB8=; b=aHLt8nNQfcE3NlJGjkvIGVRHvB3CA1doT2z1Jr1P45OwqJ0TZzYrAZcFk6bkKuBQSyjK/z 5BOxsM410PLlpJnfzASHTcJ+JQtUkTbUfN+kdOnX3F9J1zBrdjucIBSUgkkwD4+7ATF0bG YOJ7j2bmKtwAnpwyGAU08V4qI+SiAMc= X-MC-Unique: 0Bh2f2NAOUiO2sTz0dI49g-1 From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 084/103] qemuBuildControllerDevStr: Split out formatting of SCSI controller Date: Thu, 7 Oct 2021 17:18:12 +0200 Message-Id: <0895be981e5e0bd542cbcc3aa1cdb00649f462d2.1633619630.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com 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: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1633621363787100001 Content-Type: text/plain; charset="utf-8" Move the code into a new function called qemuBuildControllerSCSIDevStr so that the code is self contained and the original function easier to follow. This patch also moves the formatting of the properties relevant only for the 'virtio-scsi' controller to the specific case so it's more clear where they belong to. Signed-off-by: Peter Krempa --- src/qemu/qemu_command.c | 142 +++++++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 60 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f6466b3248..f756bb2edd 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2867,6 +2867,86 @@ qemuBuildUSBControllerDevStr(const virDomainDef *dom= ainDef, } +static char * +qemuBuildControllerSCSIDevStr(const virDomainDef *domainDef, + virDomainControllerDef *def, + virQEMUCaps *qemuCaps) +{ + g_auto(virBuffer) buf =3D VIR_BUFFER_INITIALIZER; + const char *driver =3D NULL; + + switch ((virDomainControllerModelSCSI) def->model) { + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL: + if (qemuBuildVirtioDevStr(&buf, qemuCaps, VIR_DOMAIN_DEVICE_CONTRO= LLER, def) < 0) { + return NULL; + } + + if (def->iothread) { + virBufferAsprintf(&buf, ",iothread=3Diothread%u", + def->iothread); + } + + virBufferAsprintf(&buf, ",id=3D%s", def->info.alias); + + if (def->queues) + virBufferAsprintf(&buf, ",num_queues=3D%u", def->queues); + + if (def->cmd_per_lun) + virBufferAsprintf(&buf, ",cmd_per_lun=3D%u", def->cmd_per_lun); + + if (def->max_sectors) + virBufferAsprintf(&buf, ",max_sectors=3D%u", def->max_sectors); + + qemuBuildIoEventFdStr(&buf, def->ioeventfd, qemuCaps); + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC: + driver =3D "lsi"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: + driver =3D "spapr-vscsi"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068: + driver =3D "mptsas1068"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: + driver =3D "megasas"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: + driver =3D "pvscsi"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: + driver =3D "am53c974"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: + driver =3D "dc-390"; + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: /* It is built-in dev = */ + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported controller model: %s"), + virDomainControllerModelSCSITypeToString(def->model= )); + return NULL; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SCSI controller model %d"), + def->model); + return NULL; + } + + if (driver) + virBufferAsprintf(&buf, "%s,id=3D%s", driver, def->info.alias); + + if (qemuBuildDeviceAddressStr(&buf, domainDef, &def->info) < 0) + return NULL; + + return virBufferContentAndReset(&buf); +} + + /** * qemuBuildControllerDevStr: * @domainDef: domain definition @@ -2899,56 +2979,9 @@ qemuBuildControllerDevStr(const virDomainDef *domain= Def, switch ((virDomainControllerType)def->type) { case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: - switch ((virDomainControllerModelSCSI) def->model) { - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL: - if (qemuBuildVirtioDevStr(&buf, qemuCaps, VIR_DOMAIN_DEVICE_CO= NTROLLER, def) < 0) { - return -1; - } - - if (def->iothread) { - virBufferAsprintf(&buf, ",iothread=3Diothread%u", - def->iothread); - } - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC: - virBufferAddLit(&buf, "lsi"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: - virBufferAddLit(&buf, "spapr-vscsi"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068: - virBufferAddLit(&buf, "mptsas1068"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: - virBufferAddLit(&buf, "megasas"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: - virBufferAddLit(&buf, "pvscsi"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974: - virBufferAddLit(&buf, "am53c974"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390: - virBufferAddLit(&buf, "dc-390"); - break; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: /* It is built-in = dev */ - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Unsupported controller model: %s"), - virDomainControllerModelSCSITypeToString(def->m= odel)); + if (!(*devstr =3D qemuBuildControllerSCSIDevStr(domainDef, def, qe= muCaps))) return -1; - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unexpected SCSI controller model %d"), - def->model); - return -1; - } - virBufferAsprintf(&buf, ",id=3D%s", def->info.alias); - break; + return 0; case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: if (qemuBuildVirtioDevStr(&buf, qemuCaps, VIR_DOMAIN_DEVICE_CONTRO= LLER, def) < 0) { @@ -3062,17 +3095,6 @@ qemuBuildControllerDevStr(const virDomainDef *domain= Def, return -1; } - if (def->queues) - virBufferAsprintf(&buf, ",num_queues=3D%u", def->queues); - - if (def->cmd_per_lun) - virBufferAsprintf(&buf, ",cmd_per_lun=3D%u", def->cmd_per_lun); - - if (def->max_sectors) - virBufferAsprintf(&buf, ",max_sectors=3D%u", def->max_sectors); - - qemuBuildIoEventFdStr(&buf, def->ioeventfd, qemuCaps); - if (qemuBuildDeviceAddressStr(&buf, domainDef, &def->info) < 0) return -1; --=20 2.31.1