From nobody Mon Feb 9 00:27:00 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 1552924534166174.01643770173587; Mon, 18 Mar 2019 08:55:34 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2EED9C057F31; Mon, 18 Mar 2019 15:55:32 +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 F156D17CFE; Mon, 18 Mar 2019 15:55:31 +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 C31093FA48; Mon, 18 Mar 2019 15:55:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x2IFtSmm022583 for ; Mon, 18 Mar 2019 11:55:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 753941001DC8; Mon, 18 Mar 2019 15:55:28 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id F0F7D1001E7B for ; Mon, 18 Mar 2019 15:55:27 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Mon, 18 Mar 2019 16:54:51 +0100 Message-Id: <684bf4494acdccb3bf3463f765ca21c25022a7c0.1552924269.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 02/34] conf: Move formatting of 'index' and 'startupPolicy' for virStorageSource 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.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 18 Mar 2019 15:55:32 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Move the formatters from virDomainDiskSourceFormatInternal to virDomainStorageSourceFormat. While 'startupPolicy' is attribute of the disk, we can format it when formating generic virStorageSource into an element to allow simplifying the code. Since the arguments for virDomainStorageSourceFormat got complex this patch also documents them. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/domain_conf.c | 44 ++++++++++++++++++++++++++++++------------ src/conf/domain_conf.h | 5 ++++- src/qemu/qemu_domain.c | 3 ++- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 97d56c0067..4083839fc8 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -23755,12 +23755,32 @@ virDomainDiskSourceFormatPrivateData(virBufferPtr= buf, } +/** + * virDomainStorageSourceFormat: + * @attrBuf: buffer for containing attribute portion of @src + * @childBuf: buffer for subelements of the formatted element + * @src: storage source to format + * @flags: XML formatter flags + * @seclabels: security labels are formatted if true + * @attrIndex: the 'index' attribute is formatted if true + * @policy: startup policy, taken from disk (use 0 to omit) + * @xmlopt: XML options data (for private data formatters) + * + * Formats @src into the attributes (@attrBuf) and subelements (@childBuf)= ready + * for creating a full XML element representing @src. + * + * Note that this does _not_ format the 'type' and 'format' of @src due to + * differences in callers. + */ int virDomainStorageSourceFormat(virBufferPtr attrBuf, virBufferPtr childBuf, virStorageSourcePtr src, unsigned int flags, - bool seclabels) + bool seclabels, + bool attrIndex, + int policy, + virDomainXMLOptionPtr xmlopt) { switch ((virStorageType)src->type) { case VIR_STORAGE_TYPE_FILE: @@ -23823,6 +23843,16 @@ virDomainStorageSourceFormat(virBufferPtr attrBuf, virStoragePRDefFormat(childBuf, src->pr, flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE); + if (policy && src->type !=3D VIR_STORAGE_TYPE_NETWORK) + virBufferEscapeString(attrBuf, " startupPolicy=3D'%s'", + virDomainStartupPolicyTypeToString(policy)); + + if (attrIndex && src->id !=3D 0) + virBufferAsprintf(attrBuf, " index=3D'%u'", src->id); + + if (virDomainDiskSourceFormatPrivateData(childBuf, src, flags, xmlopt)= < 0) + return -1; + return 0; } @@ -23843,17 +23873,7 @@ virDomainDiskSourceFormatInternal(virBufferPtr buf, virBufferSetChildIndent(&childBuf, buf); if (virDomainStorageSourceFormat(&attrBuf, &childBuf, src, flags, - seclabels) < 0) - goto cleanup; - - if (policy && src->type !=3D VIR_STORAGE_TYPE_NETWORK) - virBufferEscapeString(&attrBuf, " startupPolicy=3D'%s'", - virDomainStartupPolicyTypeToString(policy)); - - if (attrIndex && src->id !=3D 0) - virBufferAsprintf(&attrBuf, " index=3D'%u'", src->id); - - if (virDomainDiskSourceFormatPrivateData(&childBuf, src, flags, xmlopt= ) < 0) + seclabels, attrIndex, policy, xmlopt)= < 0) goto cleanup; if (virXMLFormatElement(buf, "source", &attrBuf, &childBuf) < 0) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index cad330715b..a6f8e13088 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3461,7 +3461,10 @@ int virDomainStorageSourceFormat(virBufferPtr attrBu= f, virBufferPtr childBuf, virStorageSourcePtr src, unsigned int flags, - bool seclabels) + bool seclabels, + bool attrIndex, + int policy, + virDomainXMLOptionPtr xmlopt) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); int virDomainStorageSourceParse(xmlNodePtr node, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 341ea7d37c..d25d9ab666 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2358,7 +2358,8 @@ qemuDomainObjPrivateXMLFormatNBDMigrationSource(virBu= fferPtr buf, virStorageFileFormatTypeToString(src->format)); if (virDomainStorageSourceFormat(&attrBuf, &childBuf, src, - VIR_DOMAIN_DEF_FORMAT_STATUS, true) <= 0) + VIR_DOMAIN_DEF_FORMAT_STATUS, true, + false, 0, NULL) < 0) goto cleanup; if (qemuStorageSourcePrivateDataFormat(src, &privateDataBuf) < 0) --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list