From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719461; cv=none; d=zohomail.com; s=zohoarc; b=M+is00q2XnYT9MAMe9zOcPLCC6CJZk2POQSJZsjG/lV5GRh32qHlB4zUvaJxay7r1sqIHkVcqNwYc9FSwIeY447hlrP0tO2Wfs/PHTB2I2mRrH9NyHff83ZD02YL4Kn0nMBrX5/Nq5l9IVJX/RU/6rCcFW0b7lrm/vkzEvsAXz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719461; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=uN2z/ZDcdxgiPvZVNCuggDFMSh4sG2sDOlk0KhqCqXA=; b=exIYe/n+fpeQa01l7CFV90zFq9GZWqvZ8LDjqOETlQJstuaoJbz8IahbRiLnuBS4Cm22VlmKuPT0iSaL+UzJdaD6xOwNFfH/3hwXhOncxsRqWEXmw7rIae+muOzvTCSlBdavpbFvyfr5imkq1NRQ2Ujld6WDOu+uQCDJ/mw+ZF4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719461483407.49362066441165; Sat, 7 Sep 2024 07:31:01 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 64F5E17DA; Sat, 7 Sep 2024 10:31:00 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 351A417F0; Sat, 7 Sep 2024 10:30:42 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 0E72B17DD; Sat, 7 Sep 2024 10:30:39 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 062591876 for ; Sat, 7 Sep 2024 10:30:32 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwPs-001ZxE-03; Sat, 07 Sep 2024 16:30:26 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=0msuzy2PBroTqbsuSWi2ZIkql6Nt9zl1G0e6caf3LaQ=; b=nNnpqVC4VnfE R9s5gK/5XDbjD5NchU4Mqbkc+tbARdMGeFQTYeD/juqXAJ8BCMil2w5ofz0yTCR+WgHO4YVfN1u3Y SKz4SRBpusvDA9h8eB9EfsDyJcLamLdYewyFZhljZmi0cJBqXstkdGAc3TIEuEh7f9nV25/mM5Nat mEmEDiQdPQn0VvnRm5TJ+LCqJ3RW+ZFYHgR7q8ZAraYyxQTdvIXv+UNjmoLOhuWk3Uu6bdIvrdCv6 F+5I0Xla/MQC/Nsd1hKwdkculpZddlCM5Pj50sG8CbVwJU9uim13FgppV9NMZQ6Ldo1AqEMn1eL63 5kq6B3fZy9n3ar3LMb7v8g==; To: devel@lists.libvirt.org Subject: [PATCH v2 01/13] conf: add data-file feature and related fields to virStorageSource Date: Sat, 7 Sep 2024 17:15:17 +0300 Message-ID: <20240907143006.50677-3-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GCPWZGAN5HR46OH6RK5LUZUC5SDNUQWH X-Message-ID-Hash: GCPWZGAN5HR46OH6RK5LUZUC5SDNUQWH X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719462582116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/conf/storage_source_conf.c | 11 +++++++++++ src/conf/storage_source_conf.h | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c index 908bc5fab2..5d197ee3ca 100644 --- a/src/conf/storage_source_conf.c +++ b/src/conf/storage_source_conf.c @@ -69,6 +69,7 @@ VIR_ENUM_IMPL(virStorageFileFeature, VIR_STORAGE_FILE_FEATURE_LAST, "lazy_refcounts", "extended_l2", + "data_file", ); =20 =20 @@ -826,6 +827,7 @@ virStorageSourceCopy(const virStorageSource *src, def->relPath =3D g_strdup(src->relPath); def->backingStoreRaw =3D g_strdup(src->backingStoreRaw); def->backingStoreRawFormat =3D src->backingStoreRawFormat; + def->dataFileRaw =3D g_strdup(src->dataFileRaw); def->snapshot =3D g_strdup(src->snapshot); def->configFile =3D g_strdup(src->configFile); def->nodenameformat =3D g_strdup(src->nodenameformat); @@ -891,6 +893,12 @@ virStorageSourceCopy(const virStorageSource *src, return NULL; } =20 + if (src->dataFileStore) { + if (!(def->dataFileStore =3D virStorageSourceCopy(src->dataFileSto= re, + false))) + return NULL; + } + if (src->fdtuple) def->fdtuple =3D g_object_ref(src->fdtuple); =20 @@ -1171,6 +1179,9 @@ virStorageSourceClear(virStorageSource *def) VIR_FREE(def->nodenamestorage); VIR_FREE(def->nodenameformat); =20 + VIR_FREE(def->dataFileRaw); + g_clear_pointer(&def->dataFileStore, virObjectUnref); + virStorageSourceBackingStoreClear(def); =20 VIR_FREE(def->tlsAlias); diff --git a/src/conf/storage_source_conf.h b/src/conf/storage_source_conf.h index 05b4bda16c..fa27e61204 100644 --- a/src/conf/storage_source_conf.h +++ b/src/conf/storage_source_conf.h @@ -88,6 +88,7 @@ VIR_ENUM_DECL(virStorageFileFormat); typedef enum { VIR_STORAGE_FILE_FEATURE_LAZY_REFCOUNTS =3D 0, VIR_STORAGE_FILE_FEATURE_EXTENDED_L2, + VIR_STORAGE_FILE_FEATURE_DATA_FILE, =20 VIR_STORAGE_FILE_FEATURE_LAST } virStorageFileFeature; @@ -359,6 +360,9 @@ struct _virStorageSource { /* backing chain of the storage source */ virStorageSource *backingStore; =20 + /* qcow2 data file source */ + virStorageSource *dataFileStore; + /* metadata for storage driver access to remote and local volumes */ void *drv; =20 @@ -369,6 +373,7 @@ struct _virStorageSource { /* Name of the child backing store recorded in metadata of the * current file. */ char *backingStoreRaw; + char *dataFileRaw; virStorageFileFormat backingStoreRawFormat; =20 /* metadata that allows identifying given storage source */ --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719491; cv=none; d=zohomail.com; s=zohoarc; b=U1QJatxep0/xXpwKdRH6OaXLAqWLzIvbcmy2xH+FngHTNnAYOD2FrTJn6OgAkgGeB27lVsP7/oeq/8JDTdphN2Vtl703bd8E+OcuWV6yybQUEAjMq3Uc8JGirWMVybe0YXov+iud/lLoCV3ieVh0+sj1UgT8Njv4DxpkIPnrj0E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719491; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=5ICcSyFJrsQF6+0j1WX304y7UgDqIc+FsOuEPpwPc9Y=; b=dnwB1ay0pMqU0d7ERO8/gAYG1l0WfTfc4t6N9mSGaHZDo0zOwWuKqG1Xf9VCWAvtI/41c1X6U6KJjEvd1xu1SgU3RRWUeJm/rkH1kYj9ihakvSKawd2ZI5mVCPcciO3zmPwn0efmxgSNf2qGLFpSCl9hThamwYReCO70Dd2JGrw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719491403815.6327666972252; Sat, 7 Sep 2024 07:31:31 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3ECB01842; Sat, 7 Sep 2024 10:31:30 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id D7E0A1859; Sat, 7 Sep 2024 10:30:58 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id B772B184E; Sat, 7 Sep 2024 10:30:55 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 87180185A for ; Sat, 7 Sep 2024 10:30:45 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwQ4-001ZxE-26; Sat, 07 Sep 2024 16:30:39 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=V7k0+MXndf4aiNG4tIXXCzFV3b8kI2AV9VCno/easuc=; b=azuxy0rgeTf+ GQGN4bewgnoBlNk1aUvSZ4z3CsBIzGWsuLJZT/7gRipwK1m7l5iFz4Mu38ODFJnSlwIAr6TlR25us APE8H1LIEErKgl0Su+nnOoMAkftiKh2XVuZD9ekbuAzMvv3s6lHytmK/tfV3mUMUAO05uj93CpVFm dSMfaBEnYbJBpsqTohhy6Sord+7AFNZEdgGCpbIwIM0m3Ft0mJqSUYP7EcKGXq8PfHJQoGMQJCe/K IomnUQOl1lKttALz5OhItNhee2gBk+PgfzI+s/nv0GxnR+v/QfQLAuhIty16Pv1IKF4pA4r7mO1E+ 8tDo68GJ9Kq8xgzdiIEJnA==; To: devel@lists.libvirt.org Subject: [PATCH v2 02/13] storage file: add getDataFile function to FileTypeInfo Date: Sat, 7 Sep 2024 17:15:19 +0300 Message-ID: <20240907143006.50677-5-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: BV34T3DOMME7H34YRA3DA756OHEWC5UB X-Message-ID-Hash: BV34T3DOMME7H34YRA3DA756OHEWC5UB X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719492706116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/storage_file/storage_file_probe.c | 34 ++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/storage_file/storage_file_probe.c b/src/storage_file/stora= ge_file_probe.c index 243927d50a..4792b9fdff 100644 --- a/src/storage_file/storage_file_probe.c +++ b/src/storage_file/storage_file_probe.c @@ -93,6 +93,7 @@ struct FileTypeInfo { size_t buf_size); int (*getBackingStore)(char **res, int *format, const char *buf, size_t buf_size); + int (*getDataFile)(char **res, char *buf, int format, size_t buf_size); int (*getFeatures)(virBitmap **features, int format, char *buf, ssize_t len); }; @@ -238,18 +239,18 @@ static struct FileEncryptionInfo const qcow2Encryptio= nInfo[] =3D { =20 static struct FileTypeInfo const fileTypeInfo[] =3D { [VIR_STORAGE_FILE_NONE] =3D { 0, NULL, LV_LITTLE_ENDIAN, - -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NUL= L }, + -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NUL= L, NULL }, [VIR_STORAGE_FILE_RAW] =3D { 0, NULL, LV_LITTLE_ENDIAN, -1, 0, {0}, 0, 0, 0, luksEncryptionInfo, - NULL, NULL, NULL }, + NULL, NULL, NULL, NULL }, [VIR_STORAGE_FILE_DIR] =3D { 0, NULL, LV_LITTLE_ENDIAN, - -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NULL= }, + -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NULL= , NULL }, [VIR_STORAGE_FILE_BOCHS] =3D { /*"Bochs Virtual HD Image", */ /* Untested */ 0, NULL, LV_LITTLE_ENDIAN, 64, 4, {0x20000}, - 32+16+16+4+4+4+4+4, 8, 1, NULL, NULL, NULL, NULL + 32+16+16+4+4+4+4+4, 8, 1, NULL, NULL, NULL, NULL, NULL }, [VIR_STORAGE_FILE_CLOOP] =3D { /* #!/bin/sh @@ -258,7 +259,7 @@ static struct FileTypeInfo const fileTypeInfo[] =3D { */ /* Untested */ 0, NULL, LV_LITTLE_ENDIAN, -1, 0, {0}, - -1, 0, 0, NULL, NULL, NULL, NULL + -1, 0, 0, NULL, NULL, NULL, NULL, NULL }, [VIR_STORAGE_FILE_DMG] =3D { /* XXX QEMU says there's no magic for dmg, @@ -266,45 +267,45 @@ static struct FileTypeInfo const fileTypeInfo[] =3D { * would have to match) but then disables that check. */ 0, NULL, 0, -1, 0, {0}, - -1, 0, 0, NULL, NULL, NULL, NULL + -1, 0, 0, NULL, NULL, NULL, NULL, NULL }, [VIR_STORAGE_FILE_ISO] =3D { 32769, "CD001", LV_LITTLE_ENDIAN, -2, 0, {0}, - -1, 0, 0, NULL, NULL, NULL, NULL + -1, 0, 0, NULL, NULL, NULL, NULL, NULL }, [VIR_STORAGE_FILE_VPC] =3D { 0, "conectix", LV_BIG_ENDIAN, 12, 4, {0x10000}, - 8 + 4 + 4 + 8 + 4 + 4 + 2 + 2 + 4, 8, 1, NULL, NULL, NULL, NULL + 8 + 4 + 4 + 8 + 4 + 4 + 2 + 2 + 4, 8, 1, NULL, NULL, NULL, NULL, N= ULL }, /* TODO: add getBackingStore function */ [VIR_STORAGE_FILE_VDI] =3D { 64, "\x7f\x10\xda\xbe", LV_LITTLE_ENDIAN, 68, 4, {0x00010001}, - 64 + 5 * 4 + 256 + 7 * 4, 8, 1, NULL, NULL, NULL, NULL}, + 64 + 5 * 4 + 256 + 7 * 4, 8, 1, NULL, NULL, NULL, NULL, NULL}, =20 /* Not direct file formats, but used for various drivers */ [VIR_STORAGE_FILE_FAT] =3D { 0, NULL, LV_LITTLE_ENDIAN, - -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NULL= }, + -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NULL= , NULL }, [VIR_STORAGE_FILE_VHD] =3D { 0, NULL, LV_LITTLE_ENDIAN, - -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NULL= }, + -1, 0, {0}, 0, 0, 0, NULL, NULL, NULL, NULL= , NULL }, [VIR_STORAGE_FILE_PLOOP] =3D { 0, "WithouFreSpacExt", LV_LITTLE_ENDIAN, -2, 0, {0}, PLOOP_IMAGE_SIZE_OFFSET, 8, - PLOOP_SIZE_MULTIPLIER, NULL, NULL, NULL, = NULL }, + PLOOP_SIZE_MULTIPLIER, NULL, NULL, NULL, = NULL, NULL }, =20 /* All formats with a backing store probe below here */ [VIR_STORAGE_FILE_COW] =3D { 0, "OOOM", LV_BIG_ENDIAN, 4, 4, {2}, - 4+4+1024+4, 8, 1, NULL, NULL, cowGetBackingStore, NULL + 4+4+1024+4, 8, 1, NULL, NULL, cowGetBackingStore, NULL, NULL }, [VIR_STORAGE_FILE_QCOW] =3D { 0, "QFI", LV_BIG_ENDIAN, 4, 4, {1}, QCOWX_HDR_IMAGE_SIZE, 8, 1, qcow1EncryptionInfo, - NULL, qcowXGetBackingStore, NULL + NULL, qcowXGetBackingStore, NULL, NULL }, [VIR_STORAGE_FILE_QCOW2] =3D { 0, "QFI", @@ -313,18 +314,19 @@ static struct FileTypeInfo const fileTypeInfo[] =3D { qcow2EncryptionInfo, qcow2GetClusterSize, qcowXGetBackingStore, + NULL, qcow2GetFeatures }, [VIR_STORAGE_FILE_QED] =3D { /* https://wiki.qemu.org/Features/QED */ 0, "QED", LV_LITTLE_ENDIAN, -2, 0, {0}, - QED_HDR_IMAGE_SIZE, 8, 1, NULL, NULL, qedGetBackingStore, NULL + QED_HDR_IMAGE_SIZE, 8, 1, NULL, NULL, qedGetBackingStore, NULL, NU= LL }, [VIR_STORAGE_FILE_VMDK] =3D { 0, "KDMV", LV_LITTLE_ENDIAN, 4, 4, {1, 2, 3}, - 4+4+4, 8, 512, NULL, NULL, vmdk4GetBackingStore, NULL + 4+4+4, 8, 512, NULL, NULL, vmdk4GetBackingStore, NULL, NULL }, }; G_STATIC_ASSERT(G_N_ELEMENTS(fileTypeInfo) =3D=3D VIR_STORAGE_FILE_LAST); --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719517; cv=none; d=zohomail.com; s=zohoarc; b=XYYgrkBsCtl+xJ0nIbhROoIggcQWZVt4kosD37J6gJCUNeO0Z7AR4RQ45xUifAd6al/JRDTG129v/ZZqkmNpZwdz0LShEfKn3u26adVGOpc05o+TYXQTBrAFZioj9UuEgOyEPnlyfuW18LM3MXIvNd/leK65ZM3QGV/TO4Gd3oI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719517; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=f1Bk1tlup8ygKP1Wy3i2ty0TQ8XBPKR3UMwn3qCa4rQ=; b=FXK0KxDHR26iKwDknk6Mr5lmzhxolpG8Aqp0vZM9Hf5kJkBASh0Kcd5+yA8aA+cX8bRGV9FyvAYNxJAXZJtMT3U1JPe0LLS1BxSQdoot0i1jIlA6G3HROEUqecItuKWstMH594LeCyBC604ypkMzuQA/9eUHEKx3ONtU2cuNJzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719517367429.68078067782255; Sat, 7 Sep 2024 07:31:57 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4428D18F4; Sat, 7 Sep 2024 10:31:56 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 3736618FE; Sat, 7 Sep 2024 10:31:05 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 5AA751805; Sat, 7 Sep 2024 10:31:01 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 0F89D1805 for ; Sat, 7 Sep 2024 10:30:57 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwQG-001ZxE-0f; Sat, 07 Sep 2024 16:30:51 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=FGKYA0Y+HLscL2zZcepVvnHuGL98gxH1VnGS4UL9f7Q=; b=Z/bZrIl5ikL/ T90s3pbt9dXDi0dmAVeiJRDwfmFluDPAKIC3cI0c1CclYB7V9jNzOLSdLp8R0JT/d4T4Cxs2UznNA MrP3019F3A3nnbh3N+Q/aGkgvKgfruNoMNl7AzzMObn6cXdLqoOCnkehgiOwYwXMzyB0FWKxkFDf5 DchQ0fwAPYD6oki3zaSsqGD+FPqa5JLi9wJVeMfQfDaGjUOfqDW4iV1NSNwoXB3bRNrhQ6zya/NDq 5fZNjtc+wsmBb/craoWYEoDIf45lgzg4mPrBkvAEdQJE/dBOHL5zHT3Xi13urE7fvvOcNyP3AXOAB Iwyi77uR1r7ZSmq68GW2ew==; To: devel@lists.libvirt.org Subject: [PATCH v2 03/13] storage file: add qcow2 data-file path parsing from header Date: Sat, 7 Sep 2024 17:15:21 +0300 Message-ID: <20240907143006.50677-7-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 5KZQ4W2MPEOQJFXDNWSTHUZGSWX47LXR X-Message-ID-Hash: 5KZQ4W2MPEOQJFXDNWSTHUZGSWX47LXR X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719518820116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/storage_file/storage_file_probe.c | 53 +++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/storage_file/storage_file_probe.c b/src/storage_file/stora= ge_file_probe.c index 4792b9fdff..21430d18aa 100644 --- a/src/storage_file/storage_file_probe.c +++ b/src/storage_file/storage_file_probe.c @@ -106,6 +106,7 @@ qcow2GetClusterSize(const char *buf, size_t buf_size); static int qcowXGetBackingStore(char **, int *, const char *, size_t); +static int qcowXGetDataFile(char **, char *, int, size_t); static int qcow2GetFeatures(virBitmap **features, int format, char *buf, ssize_t len); static int vmdk4GetBackingStore(char **, int *, @@ -127,6 +128,7 @@ qedGetBackingStore(char **, int *, const char *, size_t= ); =20 #define QCOW2_HDR_EXTENSION_END 0 #define QCOW2_HDR_EXTENSION_BACKING_FORMAT 0xE2792ACA +#define QCOW2_HDR_EXTENSION_DATA_FILE_NAME 0x44415441 =20 #define QCOW2v3_HDR_FEATURES_INCOMPATIBLE (QCOW2_HDR_TOTAL_SIZE) #define QCOW2v3_HDR_FEATURES_COMPATIBLE (QCOW2v3_HDR_FEATURES_INCOMPATIBLE= +8) @@ -314,7 +316,7 @@ static struct FileTypeInfo const fileTypeInfo[] =3D { qcow2EncryptionInfo, qcow2GetClusterSize, qcowXGetBackingStore, - NULL, + qcowXGetDataFile, qcow2GetFeatures }, [VIR_STORAGE_FILE_QED] =3D { @@ -361,7 +363,7 @@ enum qcow2IncompatibleFeature { static const virStorageFileFeature qcow2IncompatibleFeatureArray[] =3D { VIR_STORAGE_FILE_FEATURE_LAST, /* QCOW2_INCOMPATIBLE_FEATURE_DIRTY */ VIR_STORAGE_FILE_FEATURE_LAST, /* QCOW2_INCOMPATIBLE_FEATURE_CORRUPT */ - VIR_STORAGE_FILE_FEATURE_LAST, /* QCOW2_INCOMPATIBLE_FEATURE_DATA_FILE= */ + VIR_STORAGE_FILE_FEATURE_DATA_FILE, /* QCOW2_INCOMPATIBLE_FEATURE_DATA= _FILE */ VIR_STORAGE_FILE_FEATURE_LAST, /* QCOW2_INCOMPATIBLE_FEATURE_COMPRESSI= ON */ VIR_STORAGE_FILE_FEATURE_EXTENDED_L2, /* QCOW2_INCOMPATIBLE_FEATURE_EX= TL2 */ }; @@ -393,7 +395,8 @@ cowGetBackingStore(char **res, static int qcow2GetExtensions(const char *buf, size_t buf_size, - int *backingFormat) + int *backingFormat, + char **dataFilePath) { size_t offset; size_t extension_start; @@ -488,6 +491,17 @@ qcow2GetExtensions(const char *buf, break; } =20 + case QCOW2_HDR_EXTENSION_DATA_FILE_NAME: { + g_autofree char *tmp =3D NULL; + if (!dataFilePath) + break; + + *(char **)dataFilePath =3D g_new0(char, len + 1); + memcpy(*(char **)dataFilePath, buf + offset, len); + (*((char **)dataFilePath))[len] =3D '\0'; + break; + } + case QCOW2_HDR_EXTENSION_END: return 0; } @@ -554,9 +568,34 @@ qcowXGetBackingStore(char **res, memcpy(*res, buf + offset, size); (*res)[size] =3D '\0'; =20 - if (qcow2GetExtensions(buf, buf_size, format) < 0) + if (qcow2GetExtensions(buf, buf_size, format, NULL) < 0) + return 0; + + return 0; +} + + +static int +qcowXGetDataFile(char **res, + char *buf, + int format, + size_t buf_size) +{ + virBitmap *features =3D NULL; + char *filename =3D NULL; + *res =3D NULL; + + if (buf_size < QCOW2v3_HDR_FEATURES_INCOMPATIBLE + 8) return 0; =20 + ignore_value(qcow2GetFeatures(&features, format, buf, buf_size)); + if (features && virBitmapIsBitSet(features, VIR_STORAGE_FILE_FEATURE_D= ATA_FILE)) { + if (qcow2GetExtensions(buf, buf_size, NULL, &filename) < 0) + return 0; + + *res =3D g_strdup(filename); + } + return 0; } =20 @@ -963,6 +1002,12 @@ virStorageFileProbeGetMetadata(virStorageSource *meta, meta->backingStoreRawFormat =3D format; } =20 + VIR_FREE(meta->dataFileRaw); + if (fileTypeInfo[meta->format].getDataFile !=3D NULL) { + fileTypeInfo[meta->format].getDataFile(&meta->dataFileRaw, + buf, meta->format, len); + } + g_clear_pointer(&meta->features, virBitmapFree); if (fileTypeInfo[meta->format].getFeatures !=3D NULL && fileTypeInfo[meta->format].getFeatures(&meta->features, meta->form= at, buf, len) < 0) --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719540; cv=none; d=zohomail.com; s=zohoarc; b=CoqO0B+6ukPYstkmgYYI0+cTTxVCSB5Qd2+wV4mzp12dTO0Xs+TTSpPLutlYLDB3y+xDknnBrE2do5ZhJQBHKdv1llYkPIsxmk4C5x4ORXtHi3qbyBQb60O4w55GOcOBzX9UMMZUqF8VNPtMEUj/tAp9q4CvZHkDz8RaEW73yQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719540; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=JP3HL7dehFuZBLFIz9lM7Z5n5PdOxtjnbcQ7Olb50Bw=; b=gqW75muikOG0jTpIyBynvJMCI0mr0H5kCsC7AFEtCbWpruKZHJFDv3kDSRKwAI9XB5sEl6DctNjDdsdCQTJ/u7ow/QkZvJaWTRwWE0hZrawCoeB4MYB19albw76U996G5vJyHZAA8LIGH1dUEjvy1LSmVlgbUu2Tb7Q9RnkE/k4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719540646640.0448850466589; Sat, 7 Sep 2024 07:32:20 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 8A8F41915; Sat, 7 Sep 2024 10:32:19 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 34BE118A2; Sat, 7 Sep 2024 10:31:44 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id B1D361825; Sat, 7 Sep 2024 10:31:39 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 9D85E1902 for ; Sat, 7 Sep 2024 10:31:10 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwQT-001ZxE-2L; Sat, 07 Sep 2024 16:31:04 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=S8DuN+kTOv4Ht3NrQvuw0YeiIiO63cFzNhZ8A/HsopA=; b=LGeogMYrMOBt Q2tUMtO8B6KuJv+jDEVfY7efnc7uO9v60KuHU+6N5REHvdBQQ0E0G0HdcbkZ/25G3Q/+c9hL5qTtj 3KjU7UCtfQpqMp5oPH8wqVbpwlkjFw5AZ+BW+ZTswXa16tz7OG1y9eWWUzTLds4i3ne5iapU679CM VuFADhcQooQe+2GfDOiCoHchN3I64ydTItmxDBd5PMarPNgT01weZ0CsfwlJQbmuG2Lv66vjqQQY/ /dVq4Pmyj84xpPBreN5PDBUb1U9BrCC9ay0M5IYE/rwfy1VMUAdnBGDMxN8X5NaSKumjO/PKLISkw XoFRpwoYAIDrAObOvPWFAA==; To: devel@lists.libvirt.org Subject: [PATCH v2 04/13] storage file: fill in src->dataFileStore during file probe Date: Sat, 7 Sep 2024 17:15:23 +0300 Message-ID: <20240907143006.50677-9-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: VSAXWZNIJ3CDELDBRKINGF7OUJJ4CCXU X-Message-ID-Hash: VSAXWZNIJ3CDELDBRKINGF7OUJJ4CCXU X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719541093116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/storage_file/storage_source.c | 28 ++++++++++++++++++++++++++++ src/storage_file/storage_source.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/src/storage_file/storage_source.c b/src/storage_file/storage_s= ource.c index 2cfe3bc325..20d5b30c6c 100644 --- a/src/storage_file/storage_source.c +++ b/src/storage_file/storage_source.c @@ -543,6 +543,22 @@ virStorageSourceNewFromBacking(virStorageSource *paren= t, } =20 =20 +int virStorageSourceNewFromDataFile(virStorageSource *parent, + virStorageSource **dataFileSrc) +{ + int rc; + + if ((rc =3D virStorageSourceNewFromChild(parent, + parent->dataFileRaw, + dataFileSrc)) < 0) + return rc; + + (*dataFileSrc)->format =3D VIR_STORAGE_FILE_RAW; + (*dataFileSrc)->readonly =3D parent->readonly; + return rc; +} + + /** * @src: disk source definition structure * @fd: file descriptor @@ -1391,6 +1407,18 @@ virStorageSourceGetMetadataRecurse(virStorageSource = *src, } } =20 + if (src->dataFileRaw) { + g_autoptr(virStorageSource) dataFileStore =3D NULL; + if ((rv =3D virStorageSourceNewFromDataFile(src, &dataFileStore)) = < 0) + return -1; + + /* the data file would not be usable for VM usage */ + if (rv =3D=3D 1) + return 0; + + src->dataFileStore =3D g_steal_pointer(&dataFileStore); + } + if (src->backingStoreRaw) { if ((rv =3D virStorageSourceNewFromBacking(src, &backingStore)) < = 0) return -1; diff --git a/src/storage_file/storage_source.h b/src/storage_file/storage_s= ource.h index 63fefb6919..0514ff2364 100644 --- a/src/storage_file/storage_source.h +++ b/src/storage_file/storage_source.h @@ -72,6 +72,9 @@ int virStorageSourceNewFromBacking(virStorageSource *parent, virStorageSource **backing); =20 +int virStorageSourceNewFromDataFile(virStorageSource *parent, + virStorageSource **dataFileSrc); + int virStorageSourceGetRelativeBackingPath(virStorageSource *top, virStorageSource *base, --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719567; cv=none; d=zohomail.com; s=zohoarc; b=LFgf8M/WsHo/lAM2ulpZO37JW3KWE6RbDEStu8nFH7ZrA9gjy0sRqN3D9svKE0zYgVTA/h4pqSm62mwb4kEy66FD9VtnzmA2iIq6xsIvLxjywTq+5g6TyjU8kjp+V7hte+DMcOrhEQJoqtYK1CjvhvpqRXnIa6IBIGlBz1kkYlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719567; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=T89PsnfgDmgLBjcahSydThoLt7lYsFBwWbuZO9+monI=; b=m6H1gOYrKEuRNmj1wsAOFAH7nUDppHf5Rea3QyQx/ioSFU7ykuF/qcIe3yHLUQAsDNebTecgRZRpAsu6KnHkgL7MZqb1UMcM/R4hmadhgcG4QLG0On3IuZ09Ch2/3rSSajrMA6ljTpxnJK9qkthyoTwHFdIEVBjd400atwY05D4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719567383886.7282645984134; Sat, 7 Sep 2024 07:32:47 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4E2C418C7; Sat, 7 Sep 2024 10:32:46 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 8876D18D0; Sat, 7 Sep 2024 10:31:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3AAF018DA; Sat, 7 Sep 2024 10:31:50 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 83CCF190F for ; Sat, 7 Sep 2024 10:31:30 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwQn-001ZxE-2G; Sat, 07 Sep 2024 16:31:24 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=Pa6U8aomxUIRPRWH0RPckYFmQd3ATX0zxTLFM4u11oE=; b=be4xXa/SiEHj lB4TohyZkB1xeypJ4N6vDcWwQu7QzuFgs5X7gdktoZN8L/gQEKtUVpnyftsgTiwDJRDvsag/974B6 XeclPJplAVzaNJQxS8bWJgWttlqzK9Oxp9guG6WOiDWrO8Yvz0jTBpqW/x4DWquG/7oUtVczLRr8J +0l2DnwwcPG6zuLMKl+rXcoIb5mnt8/wCN0GTVV0eWdHesaG9i2wlgeL3tIufp19ir0Ck+0o4Fjwy Y3NA0B5HNjG14kF0nKWfh713idN2b6hPdynYuEg3J61Snkh4ccHogbAS2yRH8843C00/24OTwoma/ 7Ic1qADw2/nBM+bb8jqYxA==; To: devel@lists.libvirt.org Subject: [PATCH v2 05/13] security: DAC: handle qcow2 data-file on image label set/restore Date: Sat, 7 Sep 2024 17:15:25 +0300 Message-ID: <20240907143006.50677-11-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TSRJJ3IWPF3QLLOJXRIXLOR6OJ6E5BRX X-Message-ID-Hash: TSRJJ3IWPF3QLLOJXRIXLOR6OJ6E5BRX X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719568910116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/security/security_dac.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/security/security_dac.c b/src/security/security_dac.c index 59fc5b840f..f0dde46e25 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -951,6 +951,10 @@ virSecurityDACSetImageLabel(virSecurityManager *mgr, if (virSecurityDACSetImageLabelInternal(mgr, def, n, parent, isCha= inTop) < 0) return -1; =20 + if (n->dataFileStore && + virSecurityDACSetImageLabelInternal(mgr, def, n->dataFileStore= , n, true) < 0) + return -1; + if (!(flags & VIR_SECURITY_DOMAIN_IMAGE_LABEL_BACKING_CHAIN)) break; =20 @@ -1042,7 +1046,12 @@ virSecurityDACRestoreImageLabel(virSecurityManager *= mgr, virStorageSource *src, virSecurityDomainImageLabelFlags flags G_G= NUC_UNUSED) { - return virSecurityDACRestoreImageLabelInt(mgr, def, src, false); + int rc =3D virSecurityDACRestoreImageLabelInt(mgr, def, src, false); + + if (rc =3D=3D 0 && src->dataFileStore) + rc =3D virSecurityDACRestoreImageLabelInt(mgr, def, src->dataFileS= tore, false); + + return rc; } =20 =20 @@ -1906,10 +1915,17 @@ virSecurityDACRestoreAllLabel(virSecurityManager *m= gr, def->name, migrated); =20 for (i =3D 0; i < def->ndisks; i++) { - if (virSecurityDACRestoreImageLabelInt(mgr, - def, - def->disks[i]->src, - migrated) < 0) + int ret =3D virSecurityDACRestoreImageLabelInt(mgr, + def, + def->disks[i]->src, + migrated); + + if (ret =3D=3D 0 && def->disks[i]->src->dataFileStore) + ret =3D virSecurityDACRestoreImageLabelInt(mgr, + def, + def->disks[i]->src->d= ataFileStore, + migrated); + if (ret < 0) rc =3D -1; } =20 --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719585; cv=none; d=zohomail.com; s=zohoarc; b=ANfiFLZDKzl/BsXeoQJ92+U1MDM5Fd5KxAJSam/23cVwf4+iTfpEzJO4a98vL++tOvYY5fJGn7IyhwDYKW2E5eet4+q5WRBbWXiSIr0RuwN24KmASosFh/1VdqVxb7HvMHp+ad5eWIjhlDOjXra8ovvnu9ceOutL9JTt+LB+VDM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719585; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=xx7n3MTp2dBW5osPp3doeOBrY/8eneBhq7bFzNKV890=; b=I36Z2HdGJJXyhzgyGhZ5RrsiGDdr+FmAskt8SHdU5ti3dKd6VA/NPKAezJClOQzDoUm9t1RaHPWquqPV7qGOkFpD/38U3KTDu+U608G594RHqKPnEUDoHEcVpcge1+6ol7y4P7jX+/8k5q+D4fLzqYNn/HZaSrXcvpuWt63hu+Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 17257195859381007.8660670929999; Sat, 7 Sep 2024 07:33:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id E4D2F18A5; Sat, 7 Sep 2024 10:33:04 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 5F91518F5; Sat, 7 Sep 2024 10:31:58 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id D9F671824; Sat, 7 Sep 2024 10:31:53 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 99A9118B8 for ; Sat, 7 Sep 2024 10:31:41 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwQy-001ZxE-2K; Sat, 07 Sep 2024 16:31:35 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=HUGjF0l424CQJmbRRIu1g2/lDNxsB1Fglxg/eBTlGac=; b=Kho0i1ItHNQ9 8VrXaQXjZTpfDeIN4Oq3F44KYnduXXxLD50B3qXheLDogkJTMM1uTC4GBnnTFROa0q5yLic38Nc8s SO+NniFh8ypN2ZcQwF9UQ+OA+zNdvb/cdEjkGUiMDnmokoWu9etZWb5bKW/w0v/a5vwvy/AP0Zq0F 8PCMrCKFLUkSTdYERFXWk9w/OtoFaF5Y7rOH/C4vryGRSrKpk+EK5cYQKC/AJWHbBEpw2CB1kXoMX OMfLUNRnlWBz3+wOCAwnYjeQA5Zc/kmRRg5abdJ/+WRy+WQ6wpnU8ofFff4PQXD6O5c347gFttRK9 Enhe/fKSeCJFxJASJ6NgsQ==; To: devel@lists.libvirt.org Subject: [PATCH v2 06/13] security: selinux: handle qcow2 data-file on image label set/restore Date: Sat, 7 Sep 2024 17:15:27 +0300 Message-ID: <20240907143006.50677-13-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: UZGNWTUT2N7VBHMYF3UYOUTLKXKYQJAL X-Message-ID-Hash: UZGNWTUT2N7VBHMYF3UYOUTLKXKYQJAL X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719586990116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/security/security_selinux.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index 31df4d22db..6d0611fe50 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -1871,7 +1871,12 @@ virSecuritySELinuxRestoreImageLabel(virSecurityManag= er *mgr, virStorageSource *src, virSecurityDomainImageLabelFlags flags= G_GNUC_UNUSED) { - return virSecuritySELinuxRestoreImageLabelInt(mgr, def, src, false); + int rc =3D virSecuritySELinuxRestoreImageLabelInt(mgr, def, src, false= ); + + if (rc =3D=3D 0 && src->dataFileStore) + rc =3D virSecuritySELinuxRestoreImageLabelInt(mgr, def, src->dataF= ileStore, false); + + return rc; } =20 =20 @@ -1996,6 +2001,10 @@ virSecuritySELinuxSetImageLabel(virSecurityManager *= mgr, if (virSecuritySELinuxSetImageLabelInternal(mgr, def, n, parent, i= sChainTop) < 0) return -1; =20 + if (n->dataFileStore && + virSecuritySELinuxSetImageLabelInternal(mgr, def, n->dataFileS= tore, parent, isChainTop) < 0) + return -1; + if (!(flags & VIR_SECURITY_DOMAIN_IMAGE_LABEL_BACKING_CHAIN)) break; =20 @@ -2843,9 +2852,12 @@ virSecuritySELinuxRestoreAllLabel(virSecurityManager= *mgr, =20 for (i =3D 0; i < def->ndisks; i++) { virDomainDiskDef *disk =3D def->disks[i]; - - if (virSecuritySELinuxRestoreImageLabelInt(mgr, def, disk->src, - migrated) < 0) + int ret =3D virSecuritySELinuxRestoreImageLabelInt(mgr, def, disk-= >src, + migrated); + if (ret =3D=3D 0 && disk->src->dataFileStore) + ret =3D virSecuritySELinuxRestoreImageLabelInt(mgr, def, disk-= >src->dataFileStore, + migrated); + if (ret < 0) rc =3D -1; } =20 --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719603; cv=none; d=zohomail.com; s=zohoarc; b=N/vsuo7wxTXn/ZOFp9XFRFeFnw2l/WK7Ib8XQYCI7v6Zm68O5f8Bt8jxWog5QQeGxQUbFfoV+DedCUuCfZbUjoW6rDlDml3GaOb+f9funWz5RUBInCfLAJO4gSqLLhRB8FXS1YuFvcCFGnXYh/M6kWC1mw9HgHOoiSMfFZeneZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719603; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=a/FTU+W4Kn0gUDXdEnG/+QDBO2oKl8tlsYKcuRyyXGA=; b=COTV+yqyV/vjmpphS5bg86iQcn88p1NHGeI8Epg0Dcsk9reK6vvj1XVJionLRweI7oggNCtILei2Bcgv9sXnxWKHXiCRewFZnZ9BnJh0iPSa/lMBtuNhJWRtV0BdyzaTm2gxHaYSq3l1Q5Tg63iFyies/As6kf4PCc2HxnhJnvA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 172571960327945.426004407423534; Sat, 7 Sep 2024 07:33:23 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3779D17DB; Sat, 7 Sep 2024 10:33:22 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 482521890; Sat, 7 Sep 2024 10:32:11 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id E6B3518A8; Sat, 7 Sep 2024 10:32:06 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A4FB19BE for ; Sat, 7 Sep 2024 10:31:51 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwR8-001ZxE-2l; Sat, 07 Sep 2024 16:31:45 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=V8ZMS+JKWpKXajYkP2ziL5RUSgqsfOF2Y4VPlCK9cvQ=; b=DSN416g6ofKF aLzZ0mHyNiQHox0R7Y2tCz/hTm803JiK1rFN1/ORWwLQUYUj3aRZZ5XgX8MUq2qRT329Ivj+R9hTK nEWFA2s0U5z4jQsnExAm5RXd5W4bzty9HueUIjBCwQVCYHm/HiOQWB/uFAR5ueZ4zaBNt4qOYx2p8 epIsoFkqQ6D2aJIPN7ZaIItNa2+1AOzT75IPiTJQpsMCJfF0dzZi+iOzmPxeJU0DQlit/HtztwGHE fKhciUXNOdP4IuERUyCFOt+lTtJmKP5qg/G0+73uY/w8aF/YUE6NoPyWRZh8q2z+Xo9EPHWM8iBBq cO1G7jHEVGDmupJTr6Lx2g==; To: devel@lists.libvirt.org Subject: [PATCH v2 07/13] security: apparmor: handle qcow2 data-file Date: Sat, 7 Sep 2024 17:15:29 +0300 Message-ID: <20240907143006.50677-15-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: Y5UGQX5NRYJAMPBIP5XCB55ZEEUNDZQM X-Message-ID-Hash: Y5UGQX5NRYJAMPBIP5XCB55ZEEUNDZQM X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719605095116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/security/virt-aa-helper.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 067a17f331..4e8334eb3e 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -877,6 +877,10 @@ storage_source_add_files(virStorageSource *src, if (add_file_path(tmp, depth, buf) < 0) return -1; =20 + if (src->dataFileStore && + storage_source_add_files(src->dataFileStore, buf, 0) < 0) + return -1; + depth++; } =20 --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719622; cv=none; d=zohomail.com; s=zohoarc; b=QLH6NX2Lyu8tUP+S8uJgCLIK4yOuUAFg3/ayIipKajcDkBcuskBkojyy60X23WpeXqysos8T+QwUdnc/LoP+rSXmRzfdTVvsP8RzMSIbb9DH/P8dwV3Bq/liPjBTPgFyqK4h/qlQMF/ERAjThg9vzFAp7lrQJk/eKEbaT2bS/hY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719622; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=YY4o1VfzewWQ+tQyzhEWGApcAai53RhcLPR6rn4FLW0=; b=FbgKYZJyXjpF3QOX2m/ZCJ1T4kHQUQmSRknj3uvuv26XD2wXicMkVp4WoukDu9cGD32wROAPDEMxw3Xv4t49Ps4SBMC1qIEi0b++7PEbGUPiBnQ20KqsSpKdp5kaaTf9Yx3l7S7Z2DRYO/QX2oJRSe/wzcXhnks3+9h4GJQO3iU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719622974303.2817619541539; Sat, 7 Sep 2024 07:33:42 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id D72891955; Sat, 7 Sep 2024 10:33:41 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 88FF418AA; Sat, 7 Sep 2024 10:32:20 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2ACD3172F; Sat, 7 Sep 2024 10:32:16 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 33DD0180E for ; Sat, 7 Sep 2024 10:32:00 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwRH-001ZxE-1L; Sat, 07 Sep 2024 16:31:54 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=r6bPR/kLV1GX2qLmzxy34kewnSia6BrKh5GT6lu+Li0=; b=s05gez3vz8bW 0pTj4pF8Gw7oVIVbZMIEH36kMn78q91d4Gmec2BuM9SsOuXXd0uRR6/EW+q6NTO2/hJIQF7BRvUuR vw5NSp9tgq33pbP/p0lh/Olvl204UQPaBJl6XLtLpFm5dLdeHRrjCBvbrDqsgkQ7bL6ci1lyfBUeI uuNjruf4fwQ8aDRBczGC8ms0oYdYe9jOiuycEyk5+LjWnGariDlXyKCBfjWc7BFRxd5bufIfZnK5H WnMNYSmRvK4432XIneY4Cb3urV3Nrf9AobphtPAIztRo9Mkfh69+eVFTM9AaARy3fhb4V3aFz6t7b hssxFQ7yIaALJOfZ3SMCHg==; To: devel@lists.libvirt.org Subject: [PATCH v2 08/13] qemu: put data-file path to VM's cgroup and namespace Date: Sat, 7 Sep 2024 17:15:31 +0300 Message-ID: <20240907143006.50677-17-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: QJ3KQ46NSENVWOJJZI4FREXVB34DQNMJ X-Message-ID-Hash: QJ3KQ46NSENVWOJJZI4FREXVB34DQNMJ X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719623170116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/qemu/qemu_cgroup.c | 4 ++++ src/qemu/qemu_namespace.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index 23b7e6b4e8..a6d3c16e50 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -223,6 +223,10 @@ qemuSetupImageCgroupInternal(virDomainObj *vm, qemuSetupImagePathCgroup(vm, QEMU_DEVICE_MAPPER_CONTROL_PATH, fals= e) < 0) return -1; =20 + if (src->dataFileStore && + qemuSetupImagePathCgroup(vm, src->dataFileStore->path, readonly) <= 0) + return -1; + return qemuSetupImagePathCgroup(vm, path, readonly); } =20 diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c index bbe3d5a1f7..afeec63a4f 100644 --- a/src/qemu/qemu_namespace.c +++ b/src/qemu/qemu_namespace.c @@ -290,6 +290,11 @@ qemuDomainSetupDisk(virStorageSource *src, =20 if (targetPaths) *paths =3D g_slist_concat(g_slist_reverse(targetPaths), *p= aths); + + if (next->dataFileStore) { + g_autofree char *dataFilePath =3D g_strdup(next->dataFileS= tore->path); + *paths =3D g_slist_prepend(*paths, g_steal_pointer(&dataFi= lePath)); + } } =20 *paths =3D g_slist_prepend(*paths, g_steal_pointer(&tmpPath)); --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719645; cv=none; d=zohomail.com; s=zohoarc; b=CGGe8p8Gz2QBvcJoRC0a+Ny4MpnQtQro5hcOQlq2aEs9MWxOnvoy8I/tMx8y2cORfCZ1Z7SzHlXwEfKACLAfy9d+goj5cxAxGGZ+xfV45vBR0t62Rte+VS2ok8k7UdWkxoKMI0v51Vs6AVmsV0zIYW+qWcrAX4UVfnxZzH0Ex/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719645; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=A7gepbhcwcFT3ASGl8X/8uljDI639qK7MI8IpRKoukQ=; b=QsXZGhleb2Vuz+eTnsUf5EenRHeyJkrK6ZPr9FcyVwy5Smu8ZKhZPpTSsaMDtOuKcJVhTlNnERQD3XDoXfqm21gBCXmkNCMxNk5QM1lyinO+9df/PdJTaxbK71YYcYKJAHZELMa1n1XApi4f2NpA+IYDwdXh5ndzxSErNFYBExI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719645210216.2109872483095; Sat, 7 Sep 2024 07:34:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2E3E81997; Sat, 7 Sep 2024 10:34:04 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B45AA18AD; Sat, 7 Sep 2024 10:32:37 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 7420D18EB; Sat, 7 Sep 2024 10:32:33 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 8788418CE for ; Sat, 7 Sep 2024 10:32:14 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwRV-001ZxE-2A; Sat, 07 Sep 2024 16:32:08 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=Tiy/DjybGHEExl8hEF92TCUW7uHl4HTVzaCuustxDds=; b=WoJ0Vd4FTXAF Qf0oeeNHisdrHnHKOWCX3jnc+UTa88Tj1MEjklccmDbNNyg2L/wJxWpWd67jvTo522fnBGSF57J17 BZ+juaCyZPqJNkXHsUNfb2yfeSxSdqHNW0lPuSXG3z6epd9F7Slg09BajoA8HgeBLOMjIaRVmIANy M8dmYi1T/Tnzvg+hC+wIddrLjMZqTOfz/eGAFAlv3sooNTAEfQP2lHd0XowFjKmt5WZUkN1W9hMEh BdLHbg2nErVFIHaY8b1aL0dzyCvB6iTPyG0GBZ0N+siL9aXeSO2mgIT15MScit3NeOJdw67HGW6Xd kVh8H3JPAYgmK3L1Wlo2vQ==; To: devel@lists.libvirt.org Subject: [PATCH v2 09/13] qemu: factor out qemuDomainPrepareStorageSource() Date: Sat, 7 Sep 2024 17:15:33 +0300 Message-ID: <20240907143006.50677-19-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: BQQGO75LFMJDTANUYD26VBONGGOUB73B X-Message-ID-Hash: BQQGO75LFMJDTANUYD26VBONGGOUB73B X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719647205116600 Content-Type: text/plain; charset="utf-8" This refactoring will simplify next changes. Signed-off-by: Nikolai Barybin Reviewed-by: Peter Krempa --- src/qemu/qemu_domain.c | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ed305d9427..86362393e2 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -7974,6 +7974,32 @@ qemuDomainPrepareStorageSourceConfig(virStorageSourc= e *src, } =20 =20 +static int +qemuDomainPrepareStorageSource(virStorageSource *src, + virDomainObj *vm, + virDomainDiskDef *disk, + virQEMUDriverConfig *cfg) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + + /* convert detected ISO format to 'raw' as qemu would not understand i= t */ + if (src->format =3D=3D VIR_STORAGE_FILE_ISO) + src->format =3D VIR_STORAGE_FILE_RAW; + + if (qemuDomainValidateStorageSource(src, priv->qemuCaps) < 0) + return -1; + + qemuDomainPrepareStorageSourceConfig(src, cfg); + qemuDomainPrepareDiskSourceData(disk, src); + + if (!qemuDiskBusIsSD(disk->bus) && + qemuDomainPrepareStorageSourceBlockdev(disk, src, priv, cfg) < 0) + return -1; + + return 0; +} + + /** * qemuDomainDetermineDiskChain: * @driver: qemu driver object @@ -7994,7 +8020,6 @@ qemuDomainDetermineDiskChain(virQEMUDriver *driver, g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); virStorageSource *src; /* iterator for the backing chain declared in X= ML */ virStorageSource *n; /* iterator for the backing chain detected from d= isk */ - qemuDomainObjPrivate *priv =3D vm->privateData; uid_t uid; gid_t gid; =20 @@ -8078,18 +8103,7 @@ qemuDomainDetermineDiskChain(virQEMUDriver *driver, return -1; =20 for (n =3D src->backingStore; virStorageSourceIsBacking(n); n =3D n->b= ackingStore) { - /* convert detected ISO format to 'raw' as qemu would not understa= nd it */ - if (n->format =3D=3D VIR_STORAGE_FILE_ISO) - n->format =3D VIR_STORAGE_FILE_RAW; - - if (qemuDomainValidateStorageSource(n, priv->qemuCaps) < 0) - return -1; - - qemuDomainPrepareStorageSourceConfig(n, cfg); - qemuDomainPrepareDiskSourceData(disk, n); - - if (!qemuDiskBusIsSD(disk->bus) && - qemuDomainPrepareStorageSourceBlockdev(disk, n, priv, cfg) < 0) + if (qemuDomainPrepareStorageSource(n, vm, disk, cfg) < 0) return -1; } =20 --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719705; cv=none; d=zohomail.com; s=zohoarc; b=d7MbRP7Dln81P2PcdCU5gjrPouT4PftRVwnMVsi81mebq5C4AwM3gA7brtLdzuoFPhmKqMd8Vzg1fEiwyFK60ay4kV+Cx2p7WvBELyuiHmNddBLvAbbBDqEr+NL9D/YTlRE08vEG+Nrmg/NmFXFQ3VI3nqgKt5bJWaB3YwShzzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719705; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=RxmrQ+KJWE/sthRw5wJ+CVy9n8LKc4s00qwOPXC7fT8=; b=NhJDU6IvDjvfiFGJcKQKZYPCdMB0STk22slEvxSFOAeMvF0gddMzM36NQgrNToFFnRxBcIwLr8h6j5GRWZHOeYLlGvsEIXPR0Z67Tap13hfZgG8qCFCY+9k22gNH3ewkyizyr4HbAPAUEF1jMZGRqOusEetYPLEG+zG9HHgzgIk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719705362838.0713571818676; Sat, 7 Sep 2024 07:35:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 59667195F; Sat, 7 Sep 2024 10:35:04 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 982C91952; Sat, 7 Sep 2024 10:33:27 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id A902218A9; Sat, 7 Sep 2024 10:33:20 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 7EE71185C for ; Sat, 7 Sep 2024 10:33:04 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwRe-001ZxE-2L; Sat, 07 Sep 2024 16:32:17 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=eSiKg+JKNjBhG8eDas3sI17oJKQT4cpBjJguDIzRYmU=; b=jFQn1MBObscu /FjLYE4hF8ajGL/cBKOstoV7x8aDKxPcG3vOcMPBXKGsiYMO/gD7H1WTiWPb5h1OnGuNnS6MO2bAu jnuqU7HIbghQa4pong7RgRnGZplRQkOzd3sEB0PE8tS5fxowyBIMBtEBvCAAp3chZ5PhQHqUQgGkm v7t/7JWpFmK7EYHbSUgGBZWm0H3ylR2oHfVhdU5eNkAxZKMAPF301Ap9eMGmpiGgR92RYUdJbvWPn Iii1ieuJESbLsZaM7Z5ojq+btiRnAsMfHcNXP8KO+mVLzpqmcgl8q21Ld7x227+zBRx1ndRQ4FRMn cVjUfbgnmKvcxxj6mrP33A==; To: devel@lists.libvirt.org Subject: [PATCH v2 10/13] qemu: enable basic qcow2 data-file feature support Date: Sat, 7 Sep 2024 17:15:35 +0300 Message-ID: <20240907143006.50677-21-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KS2MQ23WM3SP74QZ2MTN7WK5UGSGSTWG X-Message-ID-Hash: KS2MQ23WM3SP74QZ2MTN7WK5UGSGSTWG X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719707373116600 Content-Type: text/plain; charset="utf-8" - propogate data-file to cmdline - determine data-file within disk chain - enable live disk insertion Signed-off-by: Nikolai Barybin --- src/qemu/qemu_block.c | 7 +++++++ src/qemu/qemu_command.c | 5 +++++ src/qemu/qemu_domain.c | 14 +++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 6e90bae9f2..5d2a638a56 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1301,6 +1301,13 @@ qemuBlockStorageSourceGetFormatQcow2Props(virStorage= Source *src, NULL) < 0) return -1; =20 + if (src->dataFileStore) { + if (virJSONValueObjectAdd(&props, + "s:data-file", src->dataFileStore->noden= ameformat, + NULL) < 0) + return -1; + } + return 0; } =20 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 1b992d8eed..503374f470 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -11178,6 +11178,11 @@ qemuBuildStorageSourceChainAttachPrepareBlockdev(v= irStorageSource *top) if (qemuBuildStorageSourceChainAttachPrepareBlockdevOne(data, n, n->backing= Store) < 0) return NULL; + + if (n->dataFileStore && + qemuBuildStorageSourceChainAttachPrepareBlockdevOne(data, n->d= ataFileStore, + n->dataFil= eStore->backingStore) < 0) + return NULL; } =20 return g_steal_pointer(&data); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 86362393e2..0555bc8cfd 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8102,9 +8102,17 @@ qemuDomainDetermineDiskChain(virQEMUDriver *driver, true) < 0) return -1; =20 + if (src->dataFileStore && + qemuDomainPrepareStorageSource(src->dataFileStore, vm, disk, cfg) = < 0) + return -1; + for (n =3D src->backingStore; virStorageSourceIsBacking(n); n =3D n->b= ackingStore) { if (qemuDomainPrepareStorageSource(n, vm, disk, cfg) < 0) return -1; + + if (n->dataFileStore && + qemuDomainPrepareStorageSource(n->dataFileStore, vm, disk, cfg= ) < 0) + return -1; } =20 if (qemuDomainStorageSourceValidateDepth(disksrc, 0, disk->dst) < 0) @@ -11298,7 +11306,7 @@ qemuDomainPrepareDiskSourceData(virDomainDiskDef *d= isk, return; =20 /* transfer properties valid only for the top level image */ - if (src =3D=3D disk->src) + if (src =3D=3D disk->src || src =3D=3D disk->src->dataFileStore) src->detect_zeroes =3D disk->detect_zeroes; =20 /* transfer properties valid for the full chain */ @@ -11527,6 +11535,10 @@ qemuDomainPrepareDiskSourceBlockdev(virDomainDiskD= ef *disk, for (n =3D disk->src; virStorageSourceIsBacking(n); n =3D n->backingSt= ore) { if (qemuDomainPrepareStorageSourceBlockdev(disk, n, priv, cfg) < 0) return -1; + + if (n->dataFileStore && + qemuDomainPrepareStorageSourceBlockdev(disk, n->dataFileStore,= priv, cfg) < 0) + return -1; } =20 return 0; --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719755; cv=none; d=zohomail.com; s=zohoarc; b=JY8RIIXbHSypOLpqAcjIXvljLeYH5tEUW+ghCg0IPvSoeG6GNjdtbESnOSDSNyEsUUzF/CPWXjdapWPuOE+jBj2bC1Dn9I4YGq7q7u7KeXe7ia4amaxxs0Di5Ua7FJ3wmKWyOJ8Pki2F/1pWYHOy2yewhtOCmARw0Aql3tUqtTQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719755; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=6ly5sioO7K5USVQBUM64HNBqNmM6MzfuaEinDkgSa3U=; b=Yw5u+NPBoMo4BSIIXpmvzbMag4/HemT+yzs347tKs+UHk0cHm8QO8jilVhLaBJILHhJKh5n+HUlJEA6HjxVYtmveYqjdwa/3C6Wr3UjjWEoatxK0C/4+KxhOwWH5UTabbjXGyByaZfYjoHA7aQkgfwCPyTDUilODPEnYUo7q674= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719755303581.1258804281549; Sat, 7 Sep 2024 07:35:55 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2BDC01879; Sat, 7 Sep 2024 10:35:54 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 3F9C91982; Sat, 7 Sep 2024 10:33:31 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id B6C1B17DA; Sat, 7 Sep 2024 10:33:23 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B571012E5 for ; Sat, 7 Sep 2024 10:33:08 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwRq-001ZxE-12; Sat, 07 Sep 2024 16:32:29 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=yUJJ9Opy984xcGJtpmNwRkXRfFPgEZOD6loV1Xxu1z4=; b=Ir91ib1OeAU/ GJog/FK/Huw8kfMTZboVM2mTa5Icmwsuc0UegJtaP9nl7MVowURzLpyccCxHZYWaf9/HAxJOJkNCr Asw+SZj7FaaTim/5MobIpSy2kHKERFysqVrhYy3itQYGYJQLnj/jMhP+1slF7XJ6c/lvYfgTDUnoe aMJHZC+Fsuwu1awpoYAASt1wJcT2SCrnVcRTpMPkbBglrZo9OCYXzAZ/dj0gOoAOQAmoGSqdJNA0s Kf+K2xV+/Ur3ekoSaQ8DrCgtEf7CScoyZgH08eQULwKrzQTfClHpOm7kEvBjY0vIGHqN+iiqtMz/l o/HfdmDU6+CadTl77ztvYA==; To: devel@lists.libvirt.org Subject: [PATCH v2 11/13] conf: schemas: add data-file store to domain rng schema Date: Sat, 7 Sep 2024 17:15:37 +0300 Message-ID: <20240907143006.50677-23-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 276PYRR7NW2BDBENRYP5WRQMOR3HZUPP X-Message-ID-Hash: 276PYRR7NW2BDBENRYP5WRQMOR3HZUPP X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719755543116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/conf/schemas/domaincommon.rng | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index efb5f00d77..b2fe20cdd4 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -1778,6 +1778,9 @@ + + + =20 @@ -1798,6 +1801,18 @@ + + + + + + + + + + + + --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719740; cv=none; d=zohomail.com; s=zohoarc; b=ILAqUZU5DUv80YPWoEM87zmX4qF7U8BDtj3z5knNhOdq+hauBMYkWdamK/T94KEnGxpywyNNwUpNzJ2b18AOoZxP+WABWQgDkEDuSPgjnwVaaQDPTE0F1zGIPHP5WAn+GXKfgEgjBpG24aimB5eaZMikwqx0rjuyvzTVR8x0RBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719740; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=0CCtP+nyaFlW3wqdDpIgL7iTMRXjQ55Mqr+/4fsFiBI=; b=GNEUU+Uo7Np9QBuxvwhKqZ5VpIuQyWtaXt+eNb4rWR57kqQCloBRTZCFCm6kceYMxVkO2CXrdPIOLrpkRqt+i9aJFs7EevBQT8Rvo3ZPHMwUk/3ATdpx1fgbRLXjsFWdfLdF4hNKqQHtxQtieuCFubpQXRdHULuW38Txi6p5NZw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719740070845.4661611520243; Sat, 7 Sep 2024 07:35:40 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 05A4F18C5; Sat, 7 Sep 2024 10:35:38 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 92809172D; Sat, 7 Sep 2024 10:33:29 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 911F018D1; Sat, 7 Sep 2024 10:33:21 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 0723D191D for ; Sat, 7 Sep 2024 10:33:06 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwS3-001ZxE-2P; Sat, 07 Sep 2024 16:32:42 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=HtRT8iuMQj3d10z0dauPOoPwI38XgN9khcbULnO1rJ4=; b=FhWaRW9uSxLn Bjyp4NvYAeW1syENV3Lx5G/w6AVUpO85SfbIp6+KArwfP1dJ0eU1Ojrq8JZBh2N/X7uOulU7KdSzk 5lUdwc90xNmoo7ZSdA4l5jHp/JU4irlZKWyeHU1z+B0By+m8NEASbgfxrDG1csNkP+XCLAmhm+qK/ PQ1J19SiV5/+g5hU7LuplkA4w+iMuwuXe4gYD8s4Zyt8A1uRgKE5EoNLhU7NOU4Kq7JkkgOToDkQ3 q0i/rrsxpNWySX7As5OPCuMkSbYD1wBM4SDu8W7IaCLJv5Usf65jCVVCCJRHWn5JE20loOz53wqQO bplKBrdx/s4vl2G8Ax8RQA==; To: devel@lists.libvirt.org Subject: [PATCH v2 12/13] conf: implement XML parsing/formatingo for dataFileStore Date: Sat, 7 Sep 2024 17:15:40 +0300 Message-ID: <20240907143006.50677-26-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 5HSYY476SLC3M2XIJ6OOUYN3X4EZWJYN X-Message-ID-Hash: 5HSYY476SLC3M2XIJ6OOUYN3X4EZWJYN X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719741454116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- src/conf/domain_conf.c | 98 ++++++++++++++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 13 ++++++ 2 files changed, 111 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a263612ef7..cfd25032b3 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7654,6 +7654,52 @@ virDomainStorageSourceParse(xmlNodePtr node, } =20 =20 +int +virDomainDiskDataFileStoreParse(xmlXPathContextPtr ctxt, + virStorageSource *src, + unsigned int flags, + virDomainXMLOption *xmlopt) +{ + VIR_XPATH_NODE_AUTORESTORE(ctxt) + xmlNodePtr source; + g_autofree char *type =3D NULL; + g_autofree char *format =3D NULL; + g_autoptr(virStorageSource) dataFileStore =3D NULL; + + if (!(ctxt->node =3D virXPathNode("./dataFileStore", ctxt))) + return 0; + + if (!(type =3D virXMLPropString(ctxt->node, "type"))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing data file store type")); + return -1; + } + + if (!(format =3D virXPathString("string(./format/@type)", ctxt))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing data file store format")); + return -1; + } + + if (!(source =3D virXPathNode("./source", ctxt))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing disk data file store source")); + return -1; + } + + if (!(dataFileStore =3D virDomainStorageSourceParseBase(type, format, = NULL))) + return -1; + + if (virDomainStorageSourceParse(source, ctxt, dataFileStore, flags, xm= lopt) < 0) + return -1; + + dataFileStore->readonly =3D src->readonly; + src->dataFileStore =3D g_steal_pointer(&dataFileStore); + + return 0; +} + + int virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, virStorageSource *src, @@ -7704,6 +7750,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctx= t, backingStore->readonly =3D true; =20 if (virDomainStorageSourceParse(source, ctxt, backingStore, flags, xml= opt) < 0 || + virDomainDiskDataFileStoreParse(ctxt, backingStore, flags, xmlopt)= < 0 || virDomainDiskBackingStoreParse(ctxt, backingStore, flags, xmlopt) = < 0) return -1; =20 @@ -8096,6 +8143,9 @@ virDomainDiskDefParseSourceXML(virDomainXMLOption *xm= lopt, return NULL; } =20 + if (virDomainDiskDataFileStoreParse(ctxt, src, flags, xmlopt) < 0) + return NULL; + if (virDomainDiskBackingStoreParse(ctxt, src, flags, xmlopt) < 0) return NULL; =20 @@ -22819,6 +22869,46 @@ virDomainDiskSourceFormat(virBuffer *buf, return 0; } =20 +int +virDomainDiskDataFileStoreFormat(virBuffer *buf, + virStorageSource *src, + virDomainXMLOption *xmlopt, + unsigned int flags) +{ + g_auto(virBuffer) attrBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) formatAttrBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) childBuf =3D VIR_BUFFER_INIT_CHILD(buf); + virStorageSource *dataFileStore =3D src->dataFileStore; + bool inactive =3D flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE; + + if (!dataFileStore) + return 0; + + /* don't write detected data file member to inactive xml */ + if (inactive && dataFileStore->detected) + return 0; + + if (dataFileStore->format !=3D VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unexpected disk data file format '%1$d', only ra= w format is supported"), + dataFileStore->format); + return -1; + } + + virBufferAsprintf(&attrBuf, " type=3D'%s'", + virStorageTypeToString(dataFileStore->type)); + + virBufferAsprintf(&formatAttrBuf, " type=3D'%s'", + virStorageFileFormatTypeToString(dataFileStore->form= at)); + virXMLFormatElement(&childBuf, "format", &formatAttrBuf, NULL); + + if (virDomainDiskSourceFormat(&childBuf, dataFileStore, "source", 0, f= alse, + flags, false, false, xmlopt) < 0) + return -1; + + virXMLFormatElement(buf, "dataFileStore", &attrBuf, &childBuf); + return 0; +} =20 int virDomainDiskBackingStoreFormat(virBuffer *buf, @@ -22877,6 +22967,10 @@ virDomainDiskBackingStoreFormat(virBuffer *buf, flags, false, false, xmlopt) < 0) return -1; =20 + if (backingStore->dataFileStore && + virDomainDiskDataFileStoreFormat(&childBuf, backingStore, xmlopt, = flags) < 0) + return -1; + if (virDomainDiskBackingStoreFormat(&childBuf, backingStore, xmlopt, f= lags) < 0) return -1; =20 @@ -23195,6 +23289,10 @@ virDomainDiskDefFormat(virBuffer *buf, if (virDomainDiskBackingStoreFormat(&childBuf, def->src, xmlopt, flags= ) < 0) return -1; =20 + if (def->src->dataFileStore && + virDomainDiskDataFileStoreFormat(&childBuf, def->src, xmlopt, flag= s) < 0) + return -1; + virBufferEscapeString(&childBuf, "\n", def= ->domain_name); =20 virDomainDiskGeometryDefFormat(&childBuf, def); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 659299bdd1..993c49a731 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3884,6 +3884,12 @@ int virDomainDiskSourceFormat(virBuffer *buf, bool skipEnc, virDomainXMLOption *xmlopt); =20 +int +virDomainDiskDataFileStoreFormat(virBuffer *buf, + virStorageSource *src, + virDomainXMLOption *xmlopt, + unsigned int flags); + int virDomainDiskBackingStoreFormat(virBuffer *buf, virStorageSource *src, @@ -4399,6 +4405,13 @@ int virDomainStorageSourceParse(xmlNodePtr node, virDomainXMLOption *xmlopt) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); =20 +int +virDomainDiskDataFileStoreParse(xmlXPathContextPtr ctxt, + virStorageSource *src, + unsigned int flags, + virDomainXMLOption *xmlopt) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT; + int virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, virStorageSource *src, --=20 2.43.5 From nobody Sun Feb 8 19:15:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1725719683; cv=none; d=zohomail.com; s=zohoarc; b=h1AT6ItcMd0Cf15aQr34W3SRvNaG3jvMPQVqYtGIgBF/cVnSBpPF7TMv1abs0KJk7MyqJn6m4BS391Nk2llODBFFw6/GdKDFhyZ6WNt3LlxE3iIc0rjWa9uKQbLL2UZQvHlp1jXr+7mAGJYCWMTAIXpo+uKNFaKmWZQ0mxyeAQw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1725719683; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=l0Scm8WcH+4YrhZrOHETZ1O2/PetAA2yAqirIDftFIE=; b=DdH41LqGEVF+EEdTMJDGN/Nx+s0844IfNIZgRr2a3A2RI0Xkz/17e8eGr9npEoTupkIRPqujKpD9QbBpXUzcwVZ6Y1L5tnIDd8I2tu/YmcXGqWuj4Ke+fCn4YWPYUdvwdVeekxq30tpzIlA/K94iW2c16yq8J1Z2O34JpNS24Rs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1725719683002382.4342198519282; Sat, 7 Sep 2024 07:34:43 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id E998E193D; Sat, 7 Sep 2024 10:34:41 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id DBE4C1953; Sat, 7 Sep 2024 10:33:25 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 25CCFE90; Sat, 7 Sep 2024 10:33:20 -0400 (EDT) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 3BDD218AB for ; Sat, 7 Sep 2024 10:33:02 -0400 (EDT) Received: from [130.117.225.1] (helo=vz9-barybin-2.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1smwSB-001ZxE-2H; Sat, 07 Sep 2024 16:32:50 +0200 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=V7yJ5xuESDS+cKHpgU6aGZpcNuAPkPQqAvVdQTNwUek=; b=sAj23Q7e7Vs7 qi8dKc1n7ZlFcx3czQuw4GMrO3diOn3+p+xzZpt3CzpCMOXpc9ZJXJ9xDkNMKx82NX9BsRANEsOs4 C5JYB7OiR3P8tiEXMBLTAH6dCOyl2QJI2lXw7KNGN22eI9ghPuq4yMHbob+HCP6Yi/0ceiulw3ZOv DCHvbIM0q3ryyfSk45cxjZzLlTBZ9afTCJNpSMyRnJkYIArRs2dukdYOvFogA3wuI9LJIvjLOAbe1 kAxaCojUNWt9GoujS8BOpmdls8XdTSgzr30a/atgSvxBpcC9mRcq+tqJyw+y5YB4B44JQKEUgMljB pURqWD2Igy0WldzkA07a+A==; To: devel@lists.libvirt.org Subject: [PATCH v2 13/13] tests: add qcow2 data-file basic tests to qemublocktest Date: Sat, 7 Sep 2024 17:15:42 +0300 Message-ID: <20240907143006.50677-28-nikolai.barybin@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> References: <20240907143006.50677-1-nikolai.barybin@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: VN3AFO7GKJVI5IQVKBDMPJIQ42UVINKK X-Message-ID-Hash: VN3AFO7GKJVI5IQVKBDMPJIQ42UVINKK X-MailFrom: nikolai.barybin@virtuozzo.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: den@openvz.org, Nikolai Barybin X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Nikolai Barybin via Devel Reply-To: Nikolai Barybin X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1725719683296116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Nikolai Barybin --- tests/qemublocktest.c | 78 +++++++++++-------- ...backing-with-data-file-noopts-srconly.json | 27 +++++++ ...e-qcow2-backing-with-data-file-noopts.json | 41 ++++++++++ ...le-qcow2-backing-with-data-file-noopts.xml | 35 +++++++++ .../file-qcow2-data-file-noopts-srconly.json | 18 +++++ .../xml2json/file-qcow2-data-file-noopts.json | 27 +++++++ .../xml2json/file-qcow2-data-file-noopts.xml | 24 ++++++ 7 files changed, 219 insertions(+), 31 deletions(-) create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-wit= h-data-file-noopts-srconly.json create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-wit= h-data-file-noopts.json create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-wit= h-data-file-noopts.xml create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-data-file-n= oopts-srconly.json create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-data-file-n= oopts.json create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-data-file-n= oopts.xml diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c index c581bd1748..46c080fb3b 100644 --- a/tests/qemublocktest.c +++ b/tests/qemublocktest.c @@ -247,6 +247,48 @@ testQemuDiskXMLToJSONFakeSecrets(virStorageSource *src) =20 static const char *testQemuDiskXMLToJSONPath =3D abs_srcdir "/qemublocktes= tdata/xml2json/"; =20 +static int +testQemuDiskXMLToPropsCollectDataOne(virStorageSource *src, + virDomainDiskDef *disk, + struct testQemuDiskXMLToJSONData *dat= a) +{ + g_autofree char *backingstore =3D NULL; + g_autoptr(virJSONValue) formatProps =3D NULL; + g_autoptr(virJSONValue) storageProps =3D NULL; + g_autoptr(virJSONValue) storageSrcOnlyProps =3D NULL; + + if (testQemuDiskXMLToJSONFakeSecrets(src) < 0) + return -1; + + if (qemuDomainValidateStorageSource(src, data->qemuCaps) < 0) + return -1; + + qemuDomainPrepareDiskSourceData(disk, src); + + if (!(formatProps =3D qemuBlockStorageSourceGetFormatProps(src, src->b= ackingStore)) || + !(storageSrcOnlyProps =3D qemuBlockStorageSourceGetBackendProps(sr= c, QEMU_BLOCK_STORAGE_SOURCE_BACKEND_PROPS_TARGET_ONLY)) || + !(storageProps =3D qemuBlockStorageSourceGetBackendProps(src, 0)) = || + !(backingstore =3D qemuBlockGetBackingStoreString(src, true))) { + if (!data->fail) { + VIR_TEST_VERBOSE("failed to generate qemu blockdev props"); + return -1; + } + } else if (data->fail) { + VIR_TEST_VERBOSE("qemu blockdev props should have failed"); + return -1; + } + + VIR_REALLOC_N(data->images, data->nimages + 1); + + data->images[data->nimages].formatprops =3D g_steal_pointer(&formatPro= ps); + data->images[data->nimages].storageprops =3D g_steal_pointer(&storageP= rops); + data->images[data->nimages].storagepropssrc =3D g_steal_pointer(&stora= geSrcOnlyProps); + data->images[data->nimages].backingstore =3D g_steal_pointer(&backings= tore); + + data->nimages++; + return 0; +} + static int testQemuDiskXMLToProps(const void *opaque) { @@ -254,9 +296,6 @@ testQemuDiskXMLToProps(const void *opaque) g_autoptr(virDomainDef) vmdef =3D NULL; virDomainDiskDef *disk =3D NULL; virStorageSource *n; - g_autoptr(virJSONValue) formatProps =3D NULL; - g_autoptr(virJSONValue) storageProps =3D NULL; - g_autoptr(virJSONValue) storageSrcOnlyProps =3D NULL; g_autofree char *xmlpath =3D NULL; g_autofree char *xmlstr =3D NULL; =20 @@ -284,37 +323,12 @@ testQemuDiskXMLToProps(const void *opaque) } =20 for (n =3D disk->src; virStorageSourceIsBacking(n); n =3D n->backingSt= ore) { - g_autofree char *backingstore =3D NULL; - - if (testQemuDiskXMLToJSONFakeSecrets(n) < 0) - return -1; - - if (qemuDomainValidateStorageSource(n, data->qemuCaps) < 0) + if (testQemuDiskXMLToPropsCollectDataOne(n, disk, data) < 0) return -1; =20 - qemuDomainPrepareDiskSourceData(disk, n); - - if (!(formatProps =3D qemuBlockStorageSourceGetFormatProps(n, n->b= ackingStore)) || - !(storageSrcOnlyProps =3D qemuBlockStorageSourceGetBackendProp= s(n, QEMU_BLOCK_STORAGE_SOURCE_BACKEND_PROPS_TARGET_ONLY)) || - !(storageProps =3D qemuBlockStorageSourceGetBackendProps(n, 0)= ) || - !(backingstore =3D qemuBlockGetBackingStoreString(n, true))) { - if (!data->fail) { - VIR_TEST_VERBOSE("failed to generate qemu blockdev props"); - return -1; - } - } else if (data->fail) { - VIR_TEST_VERBOSE("qemu blockdev props should have failed"); + if (n->dataFileStore && + testQemuDiskXMLToPropsCollectDataOne(n->dataFileStore, disk, d= ata) < 0) return -1; - } - - VIR_REALLOC_N(data->images, data->nimages + 1); - - data->images[data->nimages].formatprops =3D g_steal_pointer(&forma= tProps); - data->images[data->nimages].storageprops =3D g_steal_pointer(&stor= ageProps); - data->images[data->nimages].storagepropssrc =3D g_steal_pointer(&s= torageSrcOnlyProps); - data->images[data->nimages].backingstore =3D g_steal_pointer(&back= ingstore); - - data->nimages++; } =20 return 0; @@ -1123,6 +1137,8 @@ mymain(void) TEST_DISK_TO_JSON("file-qcow2-backing-chain-unterminated"); TEST_DISK_TO_JSON("file-qcow2-backing-chain-encryption"); TEST_DISK_TO_JSON("network-qcow2-backing-chain-encryption_auth"); + TEST_DISK_TO_JSON("file-qcow2-data-file-noopts"); + TEST_DISK_TO_JSON("file-qcow2-backing-with-data-file-noopts"); =20 TEST_DISK_TO_JSON("file-backing_basic-unmap"); TEST_DISK_TO_JSON("file-backing_basic-unmap-detect"); diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-data-= file-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-back= ing-with-data-file-noopts-srconly.json new file mode 100644 index 0000000000..1621b4b0fc --- /dev/null +++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-data-file-no= opts-srconly.json @@ -0,0 +1,27 @@ +( + source only properties: + { + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1507297895" + } + backing store string: + /var/lib/libvirt/images/rhel7.3.1507297895 +) +( + source only properties: + { + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1484071872" + } + backing store string: + /var/lib/libvirt/images/rhel7.3.1484071872 +) +( + source only properties: + { + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1483615252" + } + backing store string: + /var/lib/libvirt/images/rhel7.3.1483615252 +) diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-data-= file-noopts.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-with= -data-file-noopts.json new file mode 100644 index 0000000000..b78848ddea --- /dev/null +++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-data-file-no= opts.json @@ -0,0 +1,41 @@ +{ + "node-name": "#block126", + "read-only": false, + "driver": "qcow2", + "file": "#block004", + "backing": "#block313" +} +{ + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1507297895", + "node-name": "#block004", + "auto-read-only": true, + "discard": "unmap" +} +{ + "node-name": "#block313", + "read-only": true, + "driver": "qcow2", + "data-file": "#block556", + "file": "#block256" +} +{ + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1484071872", + "node-name": "#block256", + "auto-read-only": true, + "discard": "unmap" +} +{ + "node-name": "#block556", + "read-only": true, + "driver": "raw", + "file": "#block418" +} +{ + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1483615252", + "node-name": "#block418", + "auto-read-only": true, + "discard": "unmap" +} diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-data-= file-noopts.xml b/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-= data-file-noopts.xml new file mode 100644 index 0000000000..4fd561b8bf --- /dev/null +++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-with-data-file-no= opts.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts-s= rconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts-= srconly.json new file mode 100644 index 0000000000..f2fd81184b --- /dev/null +++ b/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts-srconly.= json @@ -0,0 +1,18 @@ +( + source only properties: + { + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1507297895" + } + backing store string: + /var/lib/libvirt/images/rhel7.3.1507297895 +) +( + source only properties: + { + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1484071872" + } + backing store string: + /var/lib/libvirt/images/rhel7.3.1484071872 +) diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts.j= son b/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts.json new file mode 100644 index 0000000000..ed7782b4f6 --- /dev/null +++ b/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts.json @@ -0,0 +1,27 @@ +{ + "node-name": "#block126", + "read-only": false, + "driver": "qcow2", + "data-file": "#block313", + "file": "#block004" +} +{ + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1507297895", + "node-name": "#block004", + "auto-read-only": true, + "discard": "unmap" +} +{ + "node-name": "#block313", + "read-only": false, + "driver": "raw", + "file": "#block256" +} +{ + "driver": "file", + "filename": "/var/lib/libvirt/images/rhel7.3.1484071872", + "node-name": "#block256", + "auto-read-only": true, + "discard": "unmap" +} diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts.x= ml b/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts.xml new file mode 100644 index 0000000000..6d4c9fd174 --- /dev/null +++ b/tests/qemublocktestdata/xml2json/file-qcow2-data-file-noopts.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file --=20 2.43.5