From nobody Wed May 14 05:57:24 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; 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 1525783720058623.4345536678568; Tue, 8 May 2018 05:48:40 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AA31A30B8F87; Tue, 8 May 2018 12:48:38 +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 5B3A0608F0; Tue, 8 May 2018 12:48:38 +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 0F5C9180BAED; Tue, 8 May 2018 12:48:38 +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 w48CmGvw020607 for ; Tue, 8 May 2018 08:48:16 -0400 Received: by smtp.corp.redhat.com (Postfix) id 72BC72719D; Tue, 8 May 2018 12:48:16 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-94.phx2.redhat.com [10.3.116.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 36B5116E46 for ; Tue, 8 May 2018 12:48:16 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Tue, 8 May 2018 08:48:04 -0400 Message-Id: <20180508124805.2372-12-jferlan@redhat.com> In-Reply-To: <20180508124805.2372-1-jferlan@redhat.com> References: <20180508124805.2372-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 11/12] storage_util: Introduce storageBackendCreateQemuImgSetInput 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Tue, 08 May 2018 12:48:39 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Split up virStorageBackendCreateQemuImgCmdFromVol into two parts. It's too long anyway and virStorageBackendCreateQemuImgCmdFromVol should just handle the command line processing. NB: Requires changing info.* into info->* references. Signed-off-by: John Ferlan --- src/storage/storage_util.c | 114 +++++++++++++++++++++++++----------------= ---- 1 file changed, 64 insertions(+), 50 deletions(-) diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index c28f427a1a..f7da6743b0 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -1116,91 +1116,105 @@ storageBackendResizeQemuImgImageOpts(virCommandPtr= cmd, } =20 =20 -/* Create a qemu-img virCommand from the supplied arguments */ -virCommandPtr -virStorageBackendCreateQemuImgCmdFromVol(virStoragePoolObjPtr pool, - virStorageVolDefPtr vol, - virStorageVolDefPtr inputvol, - unsigned int flags, - const char *create_tool, - const char *secretPath) +static int +virStorageBackendCreateQemuImgSetInfo(virStoragePoolObjPtr pool, + virStorageVolDefPtr vol, + virStorageVolDefPtr inputvol, + struct _virStorageBackendQemuImgInfo= *info) { - virCommandPtr cmd =3D NULL; - struct _virStorageBackendQemuImgInfo info =3D { - .format =3D vol->target.format, - .type =3D NULL, - .path =3D vol->target.path, - .allocation =3D vol->target.allocation, - .encryption =3D !!vol->target.encryption, - .preallocate =3D !!(flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADA= TA), - .compat =3D vol->target.compat, - .features =3D vol->target.features, - .nocow =3D vol->target.nocow, - .secretPath =3D secretPath, - .secretAlias =3D NULL, - }; - virStorageEncryptionInfoDefPtr enc =3D NULL; - - virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL); - /* Treat output block devices as 'raw' format */ if (vol->type =3D=3D VIR_STORAGE_VOL_BLOCK) - info.format =3D VIR_STORAGE_FILE_RAW; + info->format =3D VIR_STORAGE_FILE_RAW; =20 - if (info.format =3D=3D VIR_STORAGE_FILE_ISO) - info.format =3D VIR_STORAGE_FILE_RAW; + if (info->format =3D=3D VIR_STORAGE_FILE_ISO) + info->format =3D VIR_STORAGE_FILE_RAW; =20 - if (!(info.type =3D virStorageFileFormatTypeToString(info.format))) { + if (!(info->type =3D virStorageFileFormatTypeToString(info->format))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unknown storage vol type %d"), - info.format); - return NULL; + info->format); + return -1; } =20 - if (info.preallocate && info.format !=3D VIR_STORAGE_FILE_QCOW2) { + if (info->preallocate && info->format !=3D VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("metadata preallocation only available with qcow2= ")); - return NULL; + return -1; } - if (info.compat && info.format !=3D VIR_STORAGE_FILE_QCOW2) { + if (info->compat && info->format !=3D VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("compatibility option only available with qcow2")= ); - return NULL; + return -1; } - if (info.features && info.format !=3D VIR_STORAGE_FILE_QCOW2) { + if (info->features && info->format !=3D VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("format features only available with qcow2")); - return NULL; + return -1; } - if (info.format =3D=3D VIR_STORAGE_FILE_RAW && vol->target.encryption)= { + if (info->format =3D=3D VIR_STORAGE_FILE_RAW && vol->target.encryption= ) { if (inputvol) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("cannot use inputvol with encrypted raw volum= e")); - return NULL; + return -1; } if (vol->target.encryption->format =3D=3D VIR_STORAGE_ENCRYPTION_F= ORMAT_LUKS) { - info.type =3D "luks"; + info->type =3D "luks"; } else { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Only luks encryption is supported for raw fi= les")); - return NULL; + return -1; } } =20 if (inputvol && - storageBackendCreateQemuImgSetInput(inputvol, &info) < 0) - return NULL; + storageBackendCreateQemuImgSetInput(inputvol, info) < 0) + return -1; =20 if (virStorageSourceHasBacking(&vol->target) && - storageBackendCreateQemuImgSetBacking(pool, vol, inputvol, &info) = < 0) - return NULL; + storageBackendCreateQemuImgSetBacking(pool, vol, inputvol, info) <= 0) + return -1; =20 - if (info.encryption && - storageBackendCreateQemuImgCheckEncryption(info.format, info.type,= vol) < 0) - return NULL; + if (info->encryption && + storageBackendCreateQemuImgCheckEncryption(info->format, info->typ= e, + vol) < 0) + return -1; =20 /* Size in KB */ - info.size_arg =3D VIR_DIV_UP(vol->target.capacity, 1024); + info->size_arg =3D VIR_DIV_UP(vol->target.capacity, 1024); + + return 0; +} + + +/* Create a qemu-img virCommand from the supplied arguments */ +virCommandPtr +virStorageBackendCreateQemuImgCmdFromVol(virStoragePoolObjPtr pool, + virStorageVolDefPtr vol, + virStorageVolDefPtr inputvol, + unsigned int flags, + const char *create_tool, + const char *secretPath) +{ + virCommandPtr cmd =3D NULL; + struct _virStorageBackendQemuImgInfo info =3D { + .format =3D vol->target.format, + .type =3D NULL, + .path =3D vol->target.path, + .allocation =3D vol->target.allocation, + .encryption =3D !!vol->target.encryption, + .preallocate =3D !!(flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADA= TA), + .compat =3D vol->target.compat, + .features =3D vol->target.features, + .nocow =3D vol->target.nocow, + .secretPath =3D secretPath, + .secretAlias =3D NULL, + }; + virStorageEncryptionInfoDefPtr enc =3D NULL; + + virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL); + + if (virStorageBackendCreateQemuImgSetInfo(pool, vol, inputvol, &info) = < 0) + goto error; =20 cmd =3D virCommandNew(create_tool); =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list