From nobody Fri May 16 04:40:29 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 1499688489711754.698413509713; Mon, 10 Jul 2017 05:08:09 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0BBDA158AB0; Mon, 10 Jul 2017 12:08:03 +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 ABE6D182FA; Mon, 10 Jul 2017 12:08:02 +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 28098157C7; Mon, 10 Jul 2017 12:08:02 +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 v6AC7qoV018622 for ; Mon, 10 Jul 2017 08:07:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id 33EF662930; Mon, 10 Jul 2017 12:07:52 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.201]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8776F182E0; Mon, 10 Jul 2017 12:07:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0BBDA158AB0 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0BBDA158AB0 From: Peter Krempa To: libvir-list@redhat.com Date: Mon, 10 Jul 2017 14:07:40 +0200 Message-Id: <3524b77c94e39d49073af1289830f7f342f32bdd.1499688409.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH 08/10] qemu: block: Refactor and rename qemuGetDriveSourceProps 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.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 10 Jul 2017 12:08:03 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Rename it to qemuBlockStorageSourceGetBackendProps and refactor it to return the JSON object instead of filling a pointer since now it's always expected to return data. --- src/qemu/qemu_block.c | 49 +++++++++++++++++++++++++++++++++++----------= ---- src/qemu/qemu_block.h | 6 ++---- src/qemu/qemu_command.c | 2 +- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index e6b909015..3dbb5586d 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -519,14 +519,19 @@ qemuBuildGlusterDriveJSON(virStorageSourcePtr src) } -int -qemuGetDriveSourceProps(virStorageSourcePtr src, - virJSONValuePtr *props) +/** + * qemuBlockStorageSourceGetBackendProps: + * @src: disk source + * + * Creates a JSON object describing the underlying storage or protocol of a + * storage source. Returns NULL on error and reports an appropriate error = message. + */ +virJSONValuePtr +qemuBlockStorageSourceGetBackendProps(virStorageSourcePtr src) { int actualType =3D virStorageSourceGetActualType(src); virJSONValuePtr fileprops =3D NULL; - - *props =3D NULL; + virJSONValuePtr ret =3D NULL; switch ((virStorageType) actualType) { case VIR_STORAGE_TYPE_BLOCK: @@ -538,19 +543,35 @@ qemuGetDriveSourceProps(virStorageSourcePtr src, break; case VIR_STORAGE_TYPE_NETWORK: - if (src->protocol =3D=3D VIR_STORAGE_NET_PROTOCOL_GLUSTER && - src->nhosts > 1) { + switch ((virStorageNetProtocol) src->protocol) { + case VIR_STORAGE_NET_PROTOCOL_GLUSTER: if (!(fileprops =3D qemuBuildGlusterDriveJSON(src))) - return -1; + goto cleanup; + break; + + case VIR_STORAGE_NET_PROTOCOL_NBD: + case VIR_STORAGE_NET_PROTOCOL_RBD: + case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: + case VIR_STORAGE_NET_PROTOCOL_ISCSI: + case VIR_STORAGE_NET_PROTOCOL_HTTP: + case VIR_STORAGE_NET_PROTOCOL_HTTPS: + case VIR_STORAGE_NET_PROTOCOL_FTP: + case VIR_STORAGE_NET_PROTOCOL_FTPS: + case VIR_STORAGE_NET_PROTOCOL_TFTP: + case VIR_STORAGE_NET_PROTOCOL_SSH: + case VIR_STORAGE_NET_PROTOCOL_NONE: + case VIR_STORAGE_NET_PROTOCOL_LAST: + break; } break; } - if (fileprops && - virJSONValueObjectCreate(props, "a:file", fileprops, NULL) < 0) { - virJSONValueFree(fileprops); - return -1; - } + if (virJSONValueObjectCreate(&ret, "a:file", fileprops, NULL) < 0) + goto cleanup; - return 0; + fileprops =3D NULL; + + cleanup: + virJSONValueFree(fileprops); + return ret; } diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index 3a8950b13..17dec799f 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -53,9 +53,7 @@ qemuBlockNodeNamesDetect(virQEMUDriverPtr driver, virHashTablePtr qemuBlockGetNodeData(virJSONValuePtr data); - -int -qemuGetDriveSourceProps(virStorageSourcePtr src, - virJSONValuePtr *props); +virJSONValuePtr +qemuBlockStorageSourceGetBackendProps(virStorageSourcePtr src); #endif /* __QEMU_BLOCK_H__ */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 963224335..c20dd64dc 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1348,7 +1348,7 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk, int ret =3D -1; if (qemuDiskSourceNeedsProps(disk->src) && - qemuGetDriveSourceProps(disk->src, &srcprops) < 0) + !(srcprops =3D qemuBlockStorageSourceGetBackendProps(disk->src))) goto cleanup; if (!srcprops && --=20 2.12.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list