From nobody Mon Feb 9 01:49:12 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=1666276723; cv=none; d=zohomail.com; s=zohoarc; b=A/BDy6+QtxttgSNPXzirKnGt3r7d3VbXLaZFPBKDzOz520S9g7aQ6qc92xNUexcoVl6VMSViHA4iGdLsoVoE8o8eM+QZ5Rxxnz4iaZDg6YPcn60Tz1dGT0iOBMNuuy8N5rQcISpxvSbDsE8Od3CvLVLm7F3gP2vOdpfGGfucykU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666276723; 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=C9ht20rtfcusaBAb9vQhGYPDhYci1ztuwOSZbbvtHJE=; b=Qd3wYLTE1hmetKExLqrb1JKlUQvIFKV4yKvMkG1jV01QKhiTUWw4/RMPvPK5YsqNlNCXFJdfGzMa2C3/fmmdIYauLMz/7HyYJLxAkxcyAW03mIj3O/27dySC3jMaUNhFDZfl/5/2Rx2/qSZaQcmvzlTTZjs96WYnIP56HO0MYE8= 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 1666276723416821.0285771525514; Thu, 20 Oct 2022 07:38:43 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-264-YgXX0_XnM-aoJPhBfQ2tpw-1; Thu, 20 Oct 2022 10:38:35 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E537C100F813; Thu, 20 Oct 2022 14:38:28 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id BA5C21400C3B; Thu, 20 Oct 2022 14:38:28 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D75751947056; Thu, 20 Oct 2022 14:38:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B8F481946A72 for ; Thu, 20 Oct 2022 14:38:09 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 397A84C816; Thu, 20 Oct 2022 14:38:03 +0000 (UTC) Received: from speedmetal.lan (ovpn-208-27.brq.redhat.com [10.40.208.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id A7A281759E for ; Thu, 20 Oct 2022 14:38:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666276722; 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=C9ht20rtfcusaBAb9vQhGYPDhYci1ztuwOSZbbvtHJE=; b=N7UD9qviRaIrGlIwPQap0LIo9yjIFrjhbX5YbzW12n7Mwl6ZwJS5JrRmUEa5NlZ6rt8ZxX FWEi57s6IFzscK/pA5z+5I+gIk6tGP6uVf6U9hFsCQ3xbKr4kkjNkfV8XvxchS7NYfs4O9 Zl11HAWc6Rp6kFPn37qSZowNacKDOA8= X-MC-Unique: YgXX0_XnM-aoJPhBfQ2tpw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 6/6] storage|test|vbox: Implement support for validating storage volume XMLs Date: Thu, 20 Oct 2022 16:37:55 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 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: 1666276723715100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa --- src/storage/storage_driver.c | 18 ++++++++++++++---- src/test/test_driver.c | 16 ++++++++++++---- src/vbox/vbox_storage.c | 8 ++++++-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index c25d9ca1ad..d90c1c9ee8 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1877,8 +1877,13 @@ storageVolCreateXML(virStoragePoolPtr pool, virStorageBackend *backend; virStorageVolPtr vol =3D NULL, newvol =3D NULL; g_autoptr(virStorageVolDef) voldef =3D NULL; + unsigned int parseFlags =3D VIR_VOL_XML_PARSE_OPT_CAPACITY; - virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL); + virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA | + VIR_STORAGE_VOL_CREATE_VALIDATE, NULL); + + if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE) + parseFlags |=3D VIR_VOL_XML_PARSE_VALIDATE; if (!(obj =3D virStoragePoolObjFromStoragePool(pool))) return NULL; @@ -1893,7 +1898,7 @@ storageVolCreateXML(virStoragePoolPtr pool, if ((backend =3D virStorageBackendForType(def->type)) =3D=3D NULL) goto cleanup; - voldef =3D virStorageVolDefParse(def, xmldesc, NULL, VIR_VOL_XML_PARSE= _OPT_CAPACITY); + voldef =3D virStorageVolDefParse(def, xmldesc, NULL, parseFlags); if (voldef =3D=3D NULL) goto cleanup; @@ -2012,11 +2017,16 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, virStorageVolPtr vol =3D NULL; int buildret; g_autoptr(virStorageVolDef) voldef =3D NULL; + unsigned int parseFlags =3D VIR_VOL_XML_PARSE_NO_CAPACITY; virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA | - VIR_STORAGE_VOL_CREATE_REFLINK, + VIR_STORAGE_VOL_CREATE_REFLINK | + VIR_STORAGE_VOL_CREATE_VALIDATE, NULL); + if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE) + parseFlags |=3D VIR_VOL_XML_PARSE_VALIDATE; + obj =3D virStoragePoolObjFindByUUID(driver->pools, pool->uuid); if (obj && STRNEQ(pool->name, volsrc->pool)) { virObjectUnlock(obj); @@ -2066,7 +2076,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, goto cleanup; } - voldef =3D virStorageVolDefParse(def, xmldesc, NULL, VIR_VOL_XML_PARSE= _NO_CAPACITY); + voldef =3D virStorageVolDefParse(def, xmldesc, NULL, parseFlags); if (voldef =3D=3D NULL) goto cleanup; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 58c2a02561..87c7d8cf65 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -7182,14 +7182,18 @@ testStorageVolCreateXML(virStoragePoolPtr pool, virStoragePoolDef *def; virStorageVolPtr ret =3D NULL; g_autoptr(virStorageVolDef) privvol =3D NULL; + unsigned int parseFlags =3D 0; - virCheckFlags(0, NULL); + virCheckFlags(VIR_STORAGE_VOL_CREATE_VALIDATE, NULL); + + if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE) + parseFlags |=3D VIR_VOL_XML_PARSE_VALIDATE; if (!(obj =3D testStoragePoolObjFindActiveByName(privconn, pool->name)= )) return NULL; def =3D virStoragePoolObjGetDef(obj); - privvol =3D virStorageVolDefParse(def, xmldesc, NULL, 0); + privvol =3D virStorageVolDefParse(def, xmldesc, NULL, parseFlags); if (privvol =3D=3D NULL) goto cleanup; @@ -7241,14 +7245,18 @@ testStorageVolCreateXMLFrom(virStoragePoolPtr pool, virStorageVolDef *origvol =3D NULL; virStorageVolPtr ret =3D NULL; g_autoptr(virStorageVolDef) privvol =3D NULL; + unsigned int parseFlags =3D 0; - virCheckFlags(0, NULL); + virCheckFlags(VIR_STORAGE_VOL_CREATE_VALIDATE, NULL); + + if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE) + parseFlags |=3D VIR_VOL_XML_PARSE_VALIDATE; if (!(obj =3D testStoragePoolObjFindActiveByName(privconn, pool->name)= )) return NULL; def =3D virStoragePoolObjGetDef(obj); - privvol =3D virStorageVolDefParse(def, xmldesc, NULL, 0); + privvol =3D virStorageVolDefParse(def, xmldesc, NULL, parseFlags); if (privvol =3D=3D NULL) goto cleanup; diff --git a/src/vbox/vbox_storage.c b/src/vbox/vbox_storage.c index 7d1cee562f..f6ede700f9 100644 --- a/src/vbox/vbox_storage.c +++ b/src/vbox/vbox_storage.c @@ -409,11 +409,15 @@ vboxStorageVolCreateXML(virStoragePoolPtr pool, virStorageVolPtr ret =3D NULL; g_autoptr(virStorageVolDef) def =3D NULL; g_autofree char *homedir =3D NULL; + unsigned int parseFlags =3D 0; if (!data->vboxObj) return ret; - virCheckFlags(0, NULL); + virCheckFlags(VIR_STORAGE_VOL_CREATE_VALIDATE, NULL); + + if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE) + parseFlags |=3D VIR_VOL_XML_PARSE_VALIDATE; /* since there is currently one default pool now * and virStorageVolDefFormat() just checks it type @@ -423,7 +427,7 @@ vboxStorageVolCreateXML(virStoragePoolPtr pool, memset(&poolDef, 0, sizeof(poolDef)); poolDef.type =3D VIR_STORAGE_POOL_DIR; - if ((def =3D virStorageVolDefParse(&poolDef, xml, NULL, 0)) =3D=3D NUL= L) + if ((def =3D virStorageVolDefParse(&poolDef, xml, NULL, parseFlags)) = =3D=3D NULL) goto cleanup; if (!def->name || --=20 2.37.3