From nobody Sun Feb 8 17:22:36 2026 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1551860478645754.5941630003051; Wed, 6 Mar 2019 00:21:18 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0F819307EAB3; Wed, 6 Mar 2019 08:21:17 +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 D419C1001DC5; Wed, 6 Mar 2019 08:21: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 950FA181A269; Wed, 6 Mar 2019 08:21:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x268L2mV032541 for ; Wed, 6 Mar 2019 03:21:02 -0500 Received: by smtp.corp.redhat.com (Postfix) id 2CEDF282FE; Wed, 6 Mar 2019 08:21:02 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id A164127CB8 for ; Wed, 6 Mar 2019 08:21:01 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Wed, 6 Mar 2019 09:20:37 +0100 Message-Id: <1eb1327e68f7f472fbcefccf7e2721ad8bffe771.1551859940.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 12/23] conf: Refactor control flow in virDomainDefFormatFeatures 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: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Wed, 06 Mar 2019 08:21:17 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Use an early return to avoid one level of nesting scopes. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/domain_conf.c | 423 +++++++++++++++++++++-------------------- 1 file changed, 212 insertions(+), 211 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 215fb111bb..70f3ac4fde 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -27754,268 +27754,269 @@ virDomainDefFormatFeatures(virBufferPtr buf, break; } - if (i !=3D VIR_DOMAIN_FEATURE_LAST || - virDomainDefHasCapabilitiesFeatures(def)) { - virBufferAddLit(buf, "\n"); - virBufferAdjustIndent(buf, 2); - - for (i =3D 0; i < VIR_DOMAIN_FEATURE_LAST; i++) { - const char *name =3D virDomainFeatureTypeToString(i); - size_t j; - - if (!name) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("unexpected feature %zu"), i); - goto error; - } - - switch ((virDomainFeature) i) { - case VIR_DOMAIN_FEATURE_ACPI: - case VIR_DOMAIN_FEATURE_PAE: - case VIR_DOMAIN_FEATURE_VIRIDIAN: - case VIR_DOMAIN_FEATURE_PRIVNET: - /* NOTE: This is for old style booleans. New XML - * should use the explicit state=3Don|off output below */ - switch ((virTristateSwitch) def->features[i]) { - case VIR_TRISTATE_SWITCH_ABSENT: - break; + if (i =3D=3D VIR_DOMAIN_FEATURE_LAST && + !virDomainDefHasCapabilitiesFeatures(def)) + return 0; - case VIR_TRISTATE_SWITCH_ON: - virBufferAsprintf(buf, "<%s/>\n", name); - break; + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); - case VIR_TRISTATE_SWITCH_LAST: - case VIR_TRISTATE_SWITCH_OFF: - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unexpected state of feature '%s'"), na= me); + for (i =3D 0; i < VIR_DOMAIN_FEATURE_LAST; i++) { + const char *name =3D virDomainFeatureTypeToString(i); + size_t j; - goto error; - break; - } + if (!name) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unexpected feature %zu"), i); + goto error; + } + switch ((virDomainFeature) i) { + case VIR_DOMAIN_FEATURE_ACPI: + case VIR_DOMAIN_FEATURE_PAE: + case VIR_DOMAIN_FEATURE_VIRIDIAN: + case VIR_DOMAIN_FEATURE_PRIVNET: + /* NOTE: This is for old style booleans. New XML + * should use the explicit state=3Don|off output below */ + switch ((virTristateSwitch) def->features[i]) { + case VIR_TRISTATE_SWITCH_ABSENT: break; - case VIR_DOMAIN_FEATURE_VMCOREINFO: - case VIR_DOMAIN_FEATURE_HAP: - case VIR_DOMAIN_FEATURE_PMU: - case VIR_DOMAIN_FEATURE_PVSPINLOCK: - case VIR_DOMAIN_FEATURE_VMPORT: - case VIR_DOMAIN_FEATURE_HTM: - case VIR_DOMAIN_FEATURE_NESTED_HV: - switch ((virTristateSwitch) def->features[i]) { - case VIR_TRISTATE_SWITCH_LAST: - case VIR_TRISTATE_SWITCH_ABSENT: - break; + case VIR_TRISTATE_SWITCH_ON: + virBufferAsprintf(buf, "<%s/>\n", name); + break; - case VIR_TRISTATE_SWITCH_ON: - virBufferAsprintf(buf, "<%s state=3D'on'/>\n", name); - break; + case VIR_TRISTATE_SWITCH_LAST: + case VIR_TRISTATE_SWITCH_OFF: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected state of feature '%s'"), name); - case VIR_TRISTATE_SWITCH_OFF: - virBufferAsprintf(buf, "<%s state=3D'off'/>\n", name); - break; - } + goto error; + break; + } - break; + break; - case VIR_DOMAIN_FEATURE_SMM: - if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ABSENT) { - virTristateSwitch state =3D def->features[i]; - virBuffer attrBuf =3D VIR_BUFFER_INITIALIZER; - virBuffer childBuf =3D VIR_BUFFER_INITIALIZER; + case VIR_DOMAIN_FEATURE_VMCOREINFO: + case VIR_DOMAIN_FEATURE_HAP: + case VIR_DOMAIN_FEATURE_PMU: + case VIR_DOMAIN_FEATURE_PVSPINLOCK: + case VIR_DOMAIN_FEATURE_VMPORT: + case VIR_DOMAIN_FEATURE_HTM: + case VIR_DOMAIN_FEATURE_NESTED_HV: + switch ((virTristateSwitch) def->features[i]) { + case VIR_TRISTATE_SWITCH_LAST: + case VIR_TRISTATE_SWITCH_ABSENT: + break; - virBufferAsprintf(&attrBuf, " state=3D'%s'", - virTristateSwitchTypeToString(state)= ); + case VIR_TRISTATE_SWITCH_ON: + virBufferAsprintf(buf, "<%s state=3D'on'/>\n", name); + break; - if (state =3D=3D VIR_TRISTATE_SWITCH_ON && - def->tseg_specified) { - const char *unit; - unsigned long long short_size =3D virFormatIntPret= ty(def->tseg_size, - = &unit); + case VIR_TRISTATE_SWITCH_OFF: + virBufferAsprintf(buf, "<%s state=3D'off'/>\n", name); + break; + } - virBufferSetChildIndent(&childBuf, buf); - virBufferAsprintf(&childBuf, "%l= lu\n", - unit, short_size); - } + break; - if (virXMLFormatElement(buf, "smm", &attrBuf, &childBu= f) < 0) - goto error; + case VIR_DOMAIN_FEATURE_SMM: + if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virTristateSwitch state =3D def->features[i]; + virBuffer attrBuf =3D VIR_BUFFER_INITIALIZER; + virBuffer childBuf =3D VIR_BUFFER_INITIALIZER; + + virBufferAsprintf(&attrBuf, " state=3D'%s'", + virTristateSwitchTypeToString(state)); + + if (state =3D=3D VIR_TRISTATE_SWITCH_ON && + def->tseg_specified) { + const char *unit; + unsigned long long short_size =3D virFormatIntPretty(d= ef->tseg_size, + &un= it); + + virBufferSetChildIndent(&childBuf, buf); + virBufferAsprintf(&childBuf, "%llu\n", + unit, short_size); } - break; + if (virXMLFormatElement(buf, "smm", &attrBuf, &childBuf) <= 0) + goto error; + } - case VIR_DOMAIN_FEATURE_APIC: - if (def->features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { - virBufferAddLit(buf, "apic_eoi) { - virBufferAsprintf(buf, " eoi=3D'%s'", - virTristateSwitchTypeToString(de= f->apic_eoi)); - } - virBufferAddLit(buf, "/>\n"); + break; + + case VIR_DOMAIN_FEATURE_APIC: + if (def->features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { + virBufferAddLit(buf, "apic_eoi) { + virBufferAsprintf(buf, " eoi=3D'%s'", + virTristateSwitchTypeToString(def->a= pic_eoi)); } + virBufferAddLit(buf, "/>\n"); + } + break; + + case VIR_DOMAIN_FEATURE_HYPERV: + if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) break; - case VIR_DOMAIN_FEATURE_HYPERV: - if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + for (j =3D 0; j < VIR_DOMAIN_HYPERV_LAST; j++) { + if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ABS= ENT) + continue; + + virBufferAsprintf(buf, "<%s state=3D'%s'", + virDomainHypervTypeToString(j), + virTristateSwitchTypeToString( + def->hyperv_features[j])); + + switch ((virDomainHyperv) j) { + case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: + case VIR_DOMAIN_HYPERV_VPINDEX: + case VIR_DOMAIN_HYPERV_RUNTIME: + case VIR_DOMAIN_HYPERV_SYNIC: + case VIR_DOMAIN_HYPERV_STIMER: + case VIR_DOMAIN_HYPERV_RESET: + case VIR_DOMAIN_HYPERV_FREQUENCIES: + case VIR_DOMAIN_HYPERV_REENLIGHTENMENT: + case VIR_DOMAIN_HYPERV_TLBFLUSH: + case VIR_DOMAIN_HYPERV_IPI: + case VIR_DOMAIN_HYPERV_EVMCS: break; - virBufferAddLit(buf, "\n"); - virBufferAdjustIndent(buf, 2); - for (j =3D 0; j < VIR_DOMAIN_HYPERV_LAST; j++) { - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH= _ABSENT) - continue; - - virBufferAsprintf(buf, "<%s state=3D'%s'", - virDomainHypervTypeToString(j), - virTristateSwitchTypeToString( - def->hyperv_features[j])); - - switch ((virDomainHyperv) j) { - case VIR_DOMAIN_HYPERV_RELAXED: - case VIR_DOMAIN_HYPERV_VAPIC: - case VIR_DOMAIN_HYPERV_VPINDEX: - case VIR_DOMAIN_HYPERV_RUNTIME: - case VIR_DOMAIN_HYPERV_SYNIC: - case VIR_DOMAIN_HYPERV_STIMER: - case VIR_DOMAIN_HYPERV_RESET: - case VIR_DOMAIN_HYPERV_FREQUENCIES: - case VIR_DOMAIN_HYPERV_REENLIGHTENMENT: - case VIR_DOMAIN_HYPERV_TLBFLUSH: - case VIR_DOMAIN_HYPERV_IPI: - case VIR_DOMAIN_HYPERV_EVMCS: + case VIR_DOMAIN_HYPERV_SPINLOCKS: + if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWITCH_O= N) break; + virBufferAsprintf(buf, " retries=3D'%d'", + def->hyperv_spinlocks); + break; - case VIR_DOMAIN_HYPERV_SPINLOCKS: - if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWIT= CH_ON) - break; - virBufferAsprintf(buf, " retries=3D'%d'", - def->hyperv_spinlocks); + case VIR_DOMAIN_HYPERV_VENDOR_ID: + if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWITCH_O= N) break; + virBufferEscapeString(buf, " value=3D'%s'", + def->hyperv_vendor_id); + break; - case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWIT= CH_ON) - break; - virBufferEscapeString(buf, " value=3D'%s'", - def->hyperv_vendor_id); - break; + /* coverity[dead_error_begin] */ + case VIR_DOMAIN_HYPERV_LAST: + break; + } - /* coverity[dead_error_begin] */ - case VIR_DOMAIN_HYPERV_LAST: - break; - } + virBufferAddLit(buf, "/>\n"); + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + break; - virBufferAddLit(buf, "/>\n"); - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); + case VIR_DOMAIN_FEATURE_KVM: + if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) break; - case VIR_DOMAIN_FEATURE_KVM: - if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + for (j =3D 0; j < VIR_DOMAIN_KVM_LAST; j++) { + switch ((virDomainKVM) j) { + case VIR_DOMAIN_KVM_HIDDEN: + if (def->kvm_features[j]) + virBufferAsprintf(buf, "<%s state=3D'%s'/>\n", + virDomainKVMTypeToString(j), + virTristateSwitchTypeToString( + def->kvm_features[j])); break; - virBufferAddLit(buf, "\n"); - virBufferAdjustIndent(buf, 2); - for (j =3D 0; j < VIR_DOMAIN_KVM_LAST; j++) { - switch ((virDomainKVM) j) { - case VIR_DOMAIN_KVM_HIDDEN: - if (def->kvm_features[j]) - virBufferAsprintf(buf, "<%s state=3D'%s'/>\n", - virDomainKVMTypeToString(j), - virTristateSwitchTypeToStrin= g( - def->kvm_features[j])); - break; - - /* coverity[dead_error_begin] */ - case VIR_DOMAIN_KVM_LAST: - break; - } - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); - break; - - case VIR_DOMAIN_FEATURE_CAPABILITIES: - if (def->features[i] =3D=3D VIR_DOMAIN_CAPABILITIES_POLICY= _DEFAULT && - !virDomainDefHasCapabilitiesFeatures(def)) { + /* coverity[dead_error_begin] */ + case VIR_DOMAIN_KVM_LAST: break; } + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + break; - virBufferAsprintf(buf, "\n", - virDomainCapabilitiesPolicyTypeToString(= def->features[i])); - virBufferAdjustIndent(buf, 2); - for (j =3D 0; j < VIR_DOMAIN_CAPS_FEATURE_LAST; j++) { - if (def->caps_features[j] !=3D VIR_TRISTATE_SWITCH_ABS= ENT) - virBufferAsprintf(buf, "<%s state=3D'%s'/>\n", - virDomainCapsFeatureTypeToString= (j), - virTristateSwitchTypeToString( - def->caps_features[j])); - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); + case VIR_DOMAIN_FEATURE_CAPABILITIES: + if (def->features[i] =3D=3D VIR_DOMAIN_CAPABILITIES_POLICY_DEF= AULT && + !virDomainDefHasCapabilitiesFeatures(def)) { break; + } - case VIR_DOMAIN_FEATURE_GIC: - if (def->features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { - virBufferAddLit(buf, "gic_version !=3D VIR_GIC_VERSION_NONE) - virBufferAsprintf(buf, " version=3D'%s'", - virGICVersionTypeToString(def->g= ic_version)); - virBufferAddLit(buf, "/>\n"); - } - break; + virBufferAsprintf(buf, "\n", + virDomainCapabilitiesPolicyTypeToString(def-= >features[i])); + virBufferAdjustIndent(buf, 2); + for (j =3D 0; j < VIR_DOMAIN_CAPS_FEATURE_LAST; j++) { + if (def->caps_features[j] !=3D VIR_TRISTATE_SWITCH_ABSENT) + virBufferAsprintf(buf, "<%s state=3D'%s'/>\n", + virDomainCapsFeatureTypeToString(j), + virTristateSwitchTypeToString( + def->caps_features[j])); + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + break; - case VIR_DOMAIN_FEATURE_IOAPIC: - if (def->features[i] =3D=3D VIR_DOMAIN_IOAPIC_NONE) - break; + case VIR_DOMAIN_FEATURE_GIC: + if (def->features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { + virBufferAddLit(buf, "gic_version !=3D VIR_GIC_VERSION_NONE) + virBufferAsprintf(buf, " version=3D'%s'", + virGICVersionTypeToString(def->gic_v= ersion)); + virBufferAddLit(buf, "/>\n"); + } + break; - virBufferAsprintf(buf, "\n", - virDomainIOAPICTypeToString(def->feature= s[i])); + case VIR_DOMAIN_FEATURE_IOAPIC: + if (def->features[i] =3D=3D VIR_DOMAIN_IOAPIC_NONE) break; - case VIR_DOMAIN_FEATURE_HPT: - if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) - break; + virBufferAsprintf(buf, "\n", + virDomainIOAPICTypeToString(def->features[i]= )); + break; - virBufferFreeAndReset(&attributeBuf); - virBufferFreeAndReset(&childrenBuf); + case VIR_DOMAIN_FEATURE_HPT: + if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) + break; - if (def->hpt_resizing !=3D VIR_DOMAIN_HPT_RESIZING_NONE) { - virBufferAsprintf(&attributeBuf, - " resizing=3D'%s'", - virDomainHPTResizingTypeToString(def= ->hpt_resizing)); - } - if (def->hpt_maxpagesize > 0) { - virBufferSetChildIndent(&childrenBuf, buf); - virBufferAsprintf(&childrenBuf, - "%llu\n", - def->hpt_maxpagesize); - } + virBufferFreeAndReset(&attributeBuf); + virBufferFreeAndReset(&childrenBuf); - if (virXMLFormatElement(buf, "hpt", - &attributeBuf, &childrenBuf) < 0) { - goto error; - } - break; + if (def->hpt_resizing !=3D VIR_DOMAIN_HPT_RESIZING_NONE) { + virBufferAsprintf(&attributeBuf, + " resizing=3D'%s'", + virDomainHPTResizingTypeToString(def->hp= t_resizing)); + } + if (def->hpt_maxpagesize > 0) { + virBufferSetChildIndent(&childrenBuf, buf); + virBufferAsprintf(&childrenBuf, + "%llu\n", + def->hpt_maxpagesize); + } - case VIR_DOMAIN_FEATURE_MSRS: - if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) - break; + if (virXMLFormatElement(buf, "hpt", + &attributeBuf, &childrenBuf) < 0) { + goto error; + } + break; - virBufferAsprintf(buf, "\n", - virDomainMsrsUnknownTypeToString(def->ms= rs_features[VIR_DOMAIN_MSRS_UNKNOWN])); + case VIR_DOMAIN_FEATURE_MSRS: + if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ON) break; - /* coverity[dead_error_begin] */ - case VIR_DOMAIN_FEATURE_LAST: - break; - } - } + virBufferAsprintf(buf, "\n", + virDomainMsrsUnknownTypeToString(def->msrs_f= eatures[VIR_DOMAIN_MSRS_UNKNOWN])); + break; - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); + /* coverity[dead_error_begin] */ + case VIR_DOMAIN_FEATURE_LAST: + break; + } } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + return 0; error: --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list