From nobody Mon Sep 14 04:49:17 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1788340714818746.7798284297735; Wed, 2 Sep 2026 02:18:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BF1CE419A4; Wed, 2 Sep 2026 05:18:33 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 35F5541C03 for ; Wed, 2 Sep 2026 05:10:34 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 72C383F37B; Wed, 26 Aug 2026 04:52:42 -0400 (EDT) Received: from fout-a2-smtp.messagingengine.com (fout-a2-smtp.messagingengine.com [103.168.172.145]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5426F3F868 for ; Wed, 26 Aug 2026 04:52:41 -0400 (EDT) Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.phl.internal (Postfix) with ESMTP id BF876EC011D; Wed, 26 Aug 2026 04:46:24 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Wed, 26 Aug 2026 04:46:24 -0400 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Aug 2026 04:46:23 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 X-Greylist: delayed 379 seconds by postgrey-1.37 at lists.libvirt.org; Wed, 26 Aug 2026 04:52:41 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shotor.com; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1787733984; x= 1787820384; bh=m6GzHETJvMP5aJn4yAVFtMDVVuu3iDQIrgBdHf3qqhI=; b=E BMi9ktnkLxOJA1niklqM34u2x0G3gUSpbcwX8reKPF8jGEiw8u6PZ9Pc3ZS6dxUs x+95/BARDSCZSdZ73YqflJQiOveg7CQ/G+HtQS7FHpATnv/1qgyNRAsanKpYIxgB VXrd5f0CIO1S9dsDJKPv7WINTr/E367JR1jK4ggXMz3N57isqmQhEQyy3jqQa0E6 MM5HFY86cEMV3BifcymFnEEI6gF0rDx5H9rcReBeaSO1wDHCRHR6TdUMc+61ZeW7 wJQTsuO3DNdSimi1xTJk41Vb9Phxs/h+KsDouU4bQPE/lFWc3HTfSR8e8gdcwbVs 2u+doq40F/QSK/noJtVZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1787733984; x=1787820384; bh=m 6GzHETJvMP5aJn4yAVFtMDVVuu3iDQIrgBdHf3qqhI=; b=N4bYX5GPwJBZtgflk 0qMdtfqmR3BImRLy4bGbs8hTKM4B4QzT+FivdAEb9cicluvMUPN1VMxpfN6s+KVe aXSPs7z1t3EnLRPAGP+01R/SNMJU7lusdJBVcTP/ezOJwqwd2OF8AzwjOhHmjEZA MV0XyXq+8GAVvCvhdqVaBwSZmUMBU6xtQNdrObShkeRxire9w/MWdq5mhWEZuRrE VPyCtzmPGeS464jsGO3DvHKIzhlUT1tUwO9lViz8ClI/dWsz6FymgfIUsgFkkGgv tod3Ok6KWuujchq9kE41kQAu87O1bG1baxaQbYahZvg0Qo9OgCRwtZOt9/m7ijgg rsChQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFN/bxYWK8JZc47Cn4s2d+pRRRZAIxD+5GwvEsrs4q8AZ2moy7a9EXpI5LwcCKIIh KWYDZlIq2Agxbj5m76Alx0Iaah5UFQgn+4qOGJ0HsPJ/Y2CMDG0UgariMzK46d+IGt8WP/ h5jIr9inGjmcjjPj6BHAUQ+SpnVRseBdi8UIOYYoi1AiZDxLMsIytVPhtSWRB00Wf5JQEy rfN0ywuV/lPIZOXIDAY6Rcu6I0605Q3sp25ArJsgRt3zo54xuZPEuyJC58Cw9oDlFr9J5T /MYVIeIwd0rx6VVgcrgcMYW/fF2bbGlsWGzWADghnQ/sMwJmHtudikwkT1BeR4fgYxE2JK bh9ybH9LTvqTjQs7XklGYI2e/tmUbMFRquM/F8p4MlGhRDrBJ/GvF1YQlq8OpQLoP/qzE8 Rd/zXy/0e9pi8xaSDBTs+Eig3AndOFV/TLhudt3HLHOYL0iAy9D9uPNFte0SeUCbdruwlh HNI8BMcC1MUm+5JxGBYflRi30MD4aRb/Cv02bdO2+rLZsAo1gkQDavPl/Z4k/Aa5abZNbo eMjnsoUYHNGL2PgS1x+KHfvOyRqkmP7hMGvgwSWs4YbTnT2UbjsihnIxGjJ3ayfYMiReMw U1r60j70KzV+8yeugkhSeqAFi5HjObPic/jXIvaZUOAzMUKj/hUs2Xw+qofA X-ME-Proxy: Feedback-ID: ib8694256:Fastmail From: shotor@shotor.com To: devel@lists.libvirt.org Subject: [PATCH 1/2] ch: Fix define validation flag Date: Wed, 26 Aug 2026 10:46:17 +0200 Message-ID: <20260826084618.3447269-2-shotor@shotor.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826084618.3447269-1-shotor@shotor.com> References: <20260826084618.3447269-1-shotor@shotor.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MailFrom: shotor@shotor.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation Message-ID-Hash: Y4BJRISXQES4SZ3OFYE2OUPTQB5O7CB2 X-Message-ID-Hash: Y4BJRISXQES4SZ3OFYE2OUPTQB5O7CB2 X-Mailman-Approved-At: Wed, 02 Sep 2026 09:10:22 +0000 CC: shotor X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1788340718000154100 Content-Type: text/plain; charset="utf-8" From: shotor Check VIR_DOMAIN_DEFINE_VALIDATE instead of VIR_DOMAIN_START_VALIDATE when deciding whether to enable schema validation. VIR_DOMAIN_START_VALIDATE is not a valid flag for this API and can never be true for a valid call. Signed-off-by: shotor Reviewed-by: Michal Privoznik --- src/ch/ch_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c index ff3cb55c69..f85f38eaf2 100644 --- a/src/ch/ch_driver.c +++ b/src/ch/ch_driver.c @@ -349,7 +349,7 @@ chDomainDefineXMLFlags(virConnectPtr conn, const char *= xml, unsigned int flags) =20 virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); =20 - if (flags & VIR_DOMAIN_START_VALIDATE) + if (flags & VIR_DOMAIN_DEFINE_VALIDATE) parse_flags |=3D VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA; =20 /* Avoid parsing the whole domain definition for ACL checks */ --=20 2.55.0 From nobody Mon Sep 14 04:49:17 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787772811; cv=none; d=zohomail.com; s=zohoarc; b=OzhzYiBVVPpXCC9E7WFRLjjNt+VcToaQLyuPhBGINfScx1vEjMcEYfSobZ6Aivqp7tUmFzQDe/ijieQeTMCUNEGPYRXpleT63Yq5TIizMytsWHfmF5gjozxP5zbO5DFU2nV+UqqKwxtBgASPw3XBGtBFCaLfVb8nfNSVNBukzFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787772811; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=m6GzHETJvMP5aJn4yAVFtMDVVuu3iDQIrgBdHf3qqhI=; b=Nny2O663YdU5GRm2gRztXQikAJJWfjPbE0+7sOOzSof/pQFGA9Fp6D6oHX0i8fxYORo74l+F7mkkzAgzZJ3IotgzaojIHuo97OBjPBjKhCQmm4A3YngUOa7f7O8MTaGdT4D4aGxW6kpjVuNoVqk7doFWmby23m5ptXuHz7/RL6E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787772811668674.2604226241496; Wed, 26 Aug 2026 12:33:31 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 982F33FAF9; Wed, 26 Aug 2026 15:33:29 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id B1A8B41B65 for ; Wed, 26 Aug 2026 15:32:40 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BFA623FA30; Wed, 26 Aug 2026 15:32:30 -0400 (EDT) Received: from fhigh-b7-smtp.messagingengine.com (fhigh-b7-smtp.messagingengine.com [202.12.124.158]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 549F03F366 for ; Wed, 26 Aug 2026 15:32:29 -0400 (EDT) Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.stl.internal (Postfix) with ESMTP id B5BB97A007D; Wed, 26 Aug 2026 15:32:28 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Wed, 26 Aug 2026 15:32:28 -0400 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Aug 2026 15:32:27 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 X-Greylist: delayed 81 seconds by postgrey-1.37 at lists.libvirt.org; Wed, 26 Aug 2026 15:32:29 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shotor.com; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1787772748; x= 1787859148; bh=m6GzHETJvMP5aJn4yAVFtMDVVuu3iDQIrgBdHf3qqhI=; b=Q y5AKKspgyTo58SASjF76SpPng+BxkuMnxvALKCTTz/D6sxOMyJz1QinyO4VUTgTy JROqeji/U6qrr0BzIP/w/9OhsPNtpU4hzEl1Nd4Pn4MQ0KPI2gRhr29oXJlmZKse CXkAvzOx3bseB95a6D2Mx9mpmueNHpjt9/FUMd3DQMhtKDEQl8tVtnsg6m1+YY7g TtsSOASiaI9Eyjl1RRoqjF7O+HGGH99fku5GzXKi9ZzCXc99ELtVb0P9t28fBHdO MRoACNI64DHBzPsRivwQcN9zalhB3wNb0HkMjVtQcNIcYt26n2FyBkBdVIbMAm9+ /zWqhHgS6y5S/11hQkUqg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1787772748; x=1787859148; bh=m 6GzHETJvMP5aJn4yAVFtMDVVuu3iDQIrgBdHf3qqhI=; b=V589AurDre3VKNgof OicJM2I9lxRfGUaUSjF4hg4wyDppHfkQQYo0mecpptFIVxSIgaE5xXrJ+1VvkeZE jM69khvTUNPNWbg9JQ/o4YgZLgb3b/f/zc6iZrUE0hRXn+4FOAuf+bNgXS8RCgSP 7lHvzvvATtfPIXjjzZwQrzQjz+s3f65k6C76nfxFGyGpkG22ts4I6NqI1pFxlDZi Yx6SeGd1Ypjw5gfN30XHN4lC8MPWC38m6DBUXy/s0Yo1+KVUfYlV8YwKlVG1rolO UIvM14Tf2qEYbGF5h3MzOScbXcaEQHQGVC166w5Oq9/rALoecaQSIBugR+XqdvHP xprQA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEVAki2Rkvhdd3+Y5tb0/U+ewpFSOwsyk1d1jipvJRF+Pv08lzzLLxxJVggJEQlr4 a+f9quoL7MDmU+sW4SDzIoYGWGXOHsGfdCmwRzvgtZnvTBYmyHR66ARjKpUMmlgOJtT0ge 5Q+one/Xy6goU/SU5+5iFz/XVSt8GcLsaIK28wUyk/9I0yF5pawhNW+Nxp7HeGXhhaQkQp ThJ3c9ArAhQVL/k+2U8jfdcvwHi8IS2HKwk8TsX2p+9iapT4X6GVnu6YkarDsNJQBaoKGg ejs7LFPy1yJgIRKa4RsXd89g5ua/dYYykNxsQAzoy9NotElyVOBMg3uGy/cS+N/4TYtlE3 FRnHNBfLnNH5DF69KTvVgge9U8rxsXCim1a7j78LJ6bLLjVWO3Lu5Cf2AKU37N0ucD5rMb pjsJLd9wSjTao9/0uuWyft6PGuGtllBvH00JxmkRwlhkG3CSNaEap7S3MppcKY0AaJuPo3 oXaWqX2nmMMJlTI9MBb4ep8aEO6idubKqUXmYKsxDPz+HhxLeetF3/zb5mskyZhKDFU2dH kfG4/2Pd0hanYbCTyhoOmF8LT41eErxPecl+9mtZFWV4Y3CQPZzOunskel3bPJXrHJO2mW UREfLGfAxWgFHc5lBIgl2KgNkuOdg0dcSVkkg8Y4KeJDnjImbdNKTwBFK71Q X-ME-Proxy: Feedback-ID: ib8694256:Fastmail From: shotor@shotor.com To: devel@lists.libvirt.org Subject: [PATCH 1/2] ch: Fix define validation flag Date: Wed, 26 Aug 2026 21:32:17 +0200 Message-ID: <20260826193217.3685501-1-shotor@shotor.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826084618.3447269-1-shotor@shotor.com> References: <20260826084618.3447269-1-shotor@shotor.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ZUNYDPIUGZTZAAWSAVXN5DNBFXRYBJNO X-Message-ID-Hash: ZUNYDPIUGZTZAAWSAVXN5DNBFXRYBJNO X-MailFrom: shotor@shotor.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: shotor X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @shotor.com) X-ZM-MESSAGEID: 1787772816755158500 Content-Type: text/plain; charset="utf-8" From: shotor Check VIR_DOMAIN_DEFINE_VALIDATE instead of VIR_DOMAIN_START_VALIDATE when deciding whether to enable schema validation. VIR_DOMAIN_START_VALIDATE is not a valid flag for this API and can never be true for a valid call. Signed-off-by: shotor --- src/ch/ch_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c index ff3cb55c69..f85f38eaf2 100644 --- a/src/ch/ch_driver.c +++ b/src/ch/ch_driver.c @@ -349,7 +349,7 @@ chDomainDefineXMLFlags(virConnectPtr conn, const char *= xml, unsigned int flags) =20 virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); =20 - if (flags & VIR_DOMAIN_START_VALIDATE) + if (flags & VIR_DOMAIN_DEFINE_VALIDATE) parse_flags |=3D VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA; =20 /* Avoid parsing the whole domain definition for ACL checks */ --=20 2.55.0 From nobody Mon Sep 14 04:49:17 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787734680; cv=none; d=zohomail.com; s=zohoarc; b=GPBCBt+sZXKv0vUj08Da8i1UuUxUqcKo1iAmVED73X1ySNNpAJvY7/2vOpt/DqqHOoz5nxhZsdxDLGZvX9Ms/qRUEYYg1gDA/tMLLncNt3knwRAOgD6QjgmuWfN8gxSuqByv0TSKYn8k6w6ZZRWLyBbP+LFMH2mi7qUZAz3pDjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787734680; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=GvRtiN5lqa3vgVhZYkJePdCb4Qh5J/D4PJ0ZcpNonFs=; b=P1YGZSruUeiXyQC4vrbykDtaSjOtNm3pGkpTLOIBsLqfU4VGDlcR1NCYRBSHaJ21xuVRaAhhIEuuQIqhhQ6pHThLAXJfdX2jJMT/ht1HbPJ6j7bE/YsIeN5doLZkpm/TaoeL+NvJBybqELTpbICkWKlNL8AT1OSIkeAneSsLhSo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787734680644516.2045948832764; Wed, 26 Aug 2026 01:58:00 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id F225941ADB; Wed, 26 Aug 2026 04:57:58 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id C19C241B90 for ; Wed, 26 Aug 2026 04:56:22 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 83BD341910; Wed, 26 Aug 2026 04:56:13 -0400 (EDT) Received: from fhigh-a3-smtp.messagingengine.com (fhigh-a3-smtp.messagingengine.com [103.168.172.154]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 4AC9E3F868 for ; Wed, 26 Aug 2026 04:56:12 -0400 (EDT) Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfhigh.phl.internal (Postfix) with ESMTP id BE220140010B; Wed, 26 Aug 2026 04:46:26 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-11.internal (MEProxy); Wed, 26 Aug 2026 04:46:26 -0400 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Aug 2026 04:46:26 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shotor.com; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1787733986; x= 1787820386; bh=GvRtiN5lqa3vgVhZYkJePdCb4Qh5J/D4PJ0ZcpNonFs=; b=Q zndi6Ma3PfDxdatz+b9P4b2xccc8OUi8GaO9k0E6yG03ZNju3sPH2HVylGiXgEj1 6z5wUc/gXO2hZxU6mbUPI/YKWWLeUR2Jz+izXWEjtL0Z5b6LWeEqo0xVdeFlPT6Z mkSiOLiRiZoq52o2G3LeWdWlAAjplbOr8tCmUBBMh9iEqh98T2P9VaD5AVVhW9pc EB2DTmSZy/l4kPh10AGdURRlfWgzBfzou49hhSMmZz0WaXzPmJgXTM6oh42JJ7Gc MI1o/WqSOGMHhVt7EWl0x61YG0AYpMMLwq9SuOzggOINXY3pQ3+H7ob9moKOh8Aj cw88Ylc05dho1uaBBY2ag== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1787733986; x=1787820386; bh=G vRtiN5lqa3vgVhZYkJePdCb4Qh5J/D4PJ0ZcpNonFs=; b=YNQCFXXHpj5IFf3Rr Eltkv3aCqck8X+TaZfR9+lpOFs1AvrT5/z5dYOvLQ/3de9gGb0Na1WT2y//KHciw b2e1uwDGgeqG0kwjmXx9V714toO/rfAha1qTaFXnkCh2Os1W1y32iKptZNMqJIJ5 w27FDnG1z8XLEyCDq8Mx5gi9Z2+T2bsMS/tOXoGa7+Rywa8IU7pWuj9qMD/7yoct 7AgWr84gZt2X8aCeRemN16kdHjqyDls638e3zZwhIPExCQf9jSp509nbe4in/k0N AgR04un9NpJZF2CAtQDbqPJ9KCHA2drYzZn0KvOLpw4FHZ4wHdHFqQp1guUp4pEz T8qVA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGmadUwbQI75HxbJKB8TnWf1g0Yjm+5dA0DTeA25MAGm4WzqytNcooWljayVXpCtK 6EpiPg3nYYSmrOaSJCbp94JR5SvIqT/xbyMRWSGrFL5in57dr7imMJ/9OEL4VYSu2k/piA a4HjdlCSMJmTgxBEzA/EfgZEYmc5unyUuVayHAperQf/7wXMsVBKgMtd0NtZK/zVFEJ559 RBso6gD1XhJCCcb78CWUSUy7BZQ+6WtPxEdr7RJvEt0QfD05Tm8cd/3Lz88P2VrO94m4mk sSyrhVO/pIQ3jXSvMjBubOdMc5HiR8Uc/D6tXl7zu+UclLO4SwaZT9efeiiRiM2GxKBoja Qg1shauEBYMDKaj65V7+3eFKoN/42yqzWjMwpOwXD0D6zqQAGZ7/fvltIv8wb/4RIRE4iA 9v8qWSTr6Oqu6wM4CAos/ItfPDCvnpUEiomJNhUMrzGIPxenawuESovSYp9xnF70jQW7ho ZwDLsWT4nHlBOvD1Adq7JaxtBDfLOjmIgpZGJe2t6dPsNQOdLEL1TmOyTWvfHlJn0yOfQJ hBZls4fSveiK9kHM+MU7KtCOVOffCtE2sPznlqIF+kVnnJtjQnVMQIk4hi3xFzxN3Ifkmo 5MmqTWd1HDkMyf0lcxJ4b4GNciPfg9ySPpcSH+Lp26F9Ix9996FJWGCLR57Q X-ME-Proxy: Feedback-ID: ib8694256:Fastmail From: shotor@shotor.com To: devel@lists.libvirt.org Subject: [PATCH 2/2] ch: Add persistent domain support Date: Wed, 26 Aug 2026 10:46:18 +0200 Message-ID: <20260826084618.3447269-3-shotor@shotor.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826084618.3447269-1-shotor@shotor.com> References: <20260826084618.3447269-1-shotor@shotor.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: IOADCDEH6P3T4KE2PHBZ6LJKVLRKMR2M X-Message-ID-Hash: IOADCDEH6P3T4KE2PHBZ6LJKVLRKMR2M X-MailFrom: shotor@shotor.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: shotor X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @shotor.com) X-ZM-MESSAGEID: 1787734681897158500 Content-Type: text/plain; charset="utf-8" From: shotor Libvirt reports Cloud Hypervisor domains as having unknown persistence. Commit 85cf0e4f17ae added support for keeping a separate inactive definition for running domains, but it didn't persist domain definitions to disk or reload them when virtchd restarted. Meaning defined CH domains were still lost across daemon restarts and libvirt couldn't report them as persistent. Follow the approach used by the QEMU driver: save domain definitions to disk when they are defined, reload them during driver initialization, remove the stored configuration when they are undefined, and roll back the in-memory definition if saving fails. Also implement domainIsPersistent so libvirt reports the persistence state correctly. Signed-off-by: shotor --- src/ch/ch_conf.c | 13 +++++++--- src/ch/ch_conf.h | 1 + src/ch/ch_driver.c | 63 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 69 insertions(+), 8 deletions(-) diff --git a/src/ch/ch_conf.c b/src/ch/ch_conf.c index 6896683b7f..793ec33a10 100644 --- a/src/ch/ch_conf.c +++ b/src/ch/ch_conf.c @@ -178,22 +178,26 @@ virCHDriverConfigNew(bool privileged) cfg->logDir =3D g_strdup_printf("%s/log/libvirt/ch", LOCALSTATEDIR= ); cfg->stateDir =3D g_strdup_printf("%s/libvirt/ch", RUNSTATEDIR); cfg->saveDir =3D g_strdup_printf("%s/lib/libvirt/ch/save", LOCALST= ATEDIR); - cfg->configDir =3D g_strdup(SYSCONFDIR "/libvirt"); + cfg->configBaseDir =3D g_strdup(SYSCONFDIR "/libvirt"); + cfg->configDir =3D g_strdup_printf("%s/ch/domains", + cfg->configBaseDir); } else { g_autofree char *rundir =3D NULL; g_autofree char *cachedir =3D NULL; - g_autofree char *configbasedir =3D NULL; + const char *configbasedir =3D NULL; =20 cachedir =3D virGetUserCacheDirectory(); - cfg->logDir =3D g_strdup_printf("%s/ch/log", cachedir); =20 rundir =3D virGetUserRuntimeDirectory(); cfg->stateDir =3D g_strdup_printf("%s/ch/run", rundir); =20 configbasedir =3D virGetUserConfigDirectory(); + cfg->saveDir =3D g_strdup_printf("%s/ch/save", configbasedir); - cfg->configDir =3D g_strdup_printf("%s/ch", configbasedir); + cfg->configBaseDir =3D g_strdup_printf("%s/ch", configbasedir); + cfg->configDir =3D g_strdup_printf("%s/domains", + cfg->configBaseDir); } =20 return cfg; @@ -211,6 +215,7 @@ virCHDriverConfigDispose(void *obj) virCHDriverConfig *cfg =3D obj; =20 g_free(cfg->stateDir); + g_free(cfg->configBaseDir); g_free(cfg->configDir); g_free(cfg->logDir); g_free(cfg->saveDir); diff --git a/src/ch/ch_conf.h b/src/ch/ch_conf.h index 1660762f2b..c3b59bba0d 100644 --- a/src/ch/ch_conf.h +++ b/src/ch/ch_conf.h @@ -51,6 +51,7 @@ struct _virCHDriverConfig { GObject parent; =20 char *stateDir; + char *configBaseDir; char *configDir; char *logDir; char *saveDir; diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c index f85f38eaf2..51c69b799a 100644 --- a/src/ch/ch_driver.c +++ b/src/ch/ch_driver.c @@ -336,11 +336,14 @@ chDomainCreate(virDomainPtr dom) } =20 static virDomainPtr -chDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int f= lags) +chDomainDefineXMLFlags(virConnectPtr conn, + const char *xml, + unsigned int flags) { virCHDriver *driver =3D conn->privateData; g_autoptr(virDomainDef) vmdef =3D NULL; g_autoptr(virDomainDef) oldDef =3D NULL; + g_autoptr(virCHDriverConfig) cfg =3D virCHDriverGetConfig(driver); virDomainObj *vm =3D NULL; virDomainPtr dom =3D NULL; virObjectEvent *event =3D NULL; @@ -382,15 +385,34 @@ chDomainDefineXMLFlags(virConnectPtr conn, const char= *xml, unsigned int flags) goto cleanup; } =20 + if (virDomainDefSave(vm->newDef ? vm->newDef : vm->def, + driver->xmlopt, + cfg->configDir) < 0) + goto cleanup; + vm->persistent =3D 1; + event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_DEFINED, !oldDef ? VIR_DOMAIN_EVENT_DEFINED_ADD= ED : VIR_DOMAIN_EVENT_DEFINED_UPD= ATED); + dom =3D virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id); =20 cleanup: + if (!dom && !vmdef) { + if (oldDef) { + if (virDomainObjIsActive(vm)) + vm->newDef =3D oldDef; + else + vm->def =3D oldDef; + oldDef =3D NULL; + } else { + virCHDomainRemoveInactive(driver, vm); + } + } + virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); =20 @@ -408,6 +430,7 @@ chDomainUndefineFlags(virDomainPtr dom, unsigned int flags) { virCHDriver *driver =3D dom->conn->privateData; + g_autoptr(virCHDriverConfig) cfg =3D virCHDriverGetConfig(driver); virDomainObj *vm; virObjectEvent *event =3D NULL; int ret =3D -1; @@ -425,14 +448,18 @@ chDomainUndefineFlags(virDomainPtr dom, "%s", _("Cannot undefine transient domain")); goto cleanup; } + + if (virDomainDeleteConfig(cfg->configDir, NULL, vm) < 0) + goto cleanup; + event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_UNDEFINED, VIR_DOMAIN_EVENT_UNDEFINED_R= EMOVED); =20 vm->persistent =3D 0; - if (!virDomainObjIsActive(vm)) { + + if (!virDomainObjIsActive(vm)) virCHDomainRemoveInactive(driver, vm); - } =20 ret =3D 0; =20 @@ -467,6 +494,24 @@ static int chDomainIsActive(virDomainPtr dom) return ret; } =20 +static int chDomainIsPersistent(virDomainPtr dom) +{ + virDomainObj *vm; + int ret =3D -1; + + if (!(vm =3D virCHDomainObjFromDomain(dom))) + goto cleanup; + + if (virDomainIsPersistentEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + + ret =3D vm->persistent; + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static int chDomainShutdownFlags(virDomainPtr dom, unsigned int flags) @@ -1493,11 +1538,20 @@ chStateInitialize(bool privileged, if (!(ch_driver->config =3D virCHDriverConfigNew(privileged))) goto cleanup; =20 - driverConf =3D g_strdup_printf("%s/ch.conf", ch_driver->config->config= Dir); + driverConf =3D g_strdup_printf("%s/ch.conf", ch_driver->config->config= BaseDir); =20 if (virCHDriverConfigLoadFile(ch_driver->config, driverConf) < 0) goto cleanup; =20 + if (virDomainObjListLoadAllConfigs(ch_driver->domains, + ch_driver->config->configDir, + NULL, + false, + ch_driver->xmlopt, + NULL, + NULL) < 0) + goto cleanup; + if (!(ch_driver->hostdevMgr =3D virHostdevManagerGetDefault())) goto cleanup; =20 @@ -2550,6 +2604,7 @@ static virHypervisorDriver chHypervisorDriver =3D { .domainGetXMLDesc =3D chDomainGetXMLDesc, /* 7.5.0 */ .domainGetInfo =3D chDomainGetInfo, /* 7.5.0 */ .domainIsActive =3D chDomainIsActive, /* 7.5.0 */ + .domainIsPersistent =3D chDomainIsPersistent, /* 12.7.0 */ .domainOpenConsole =3D chDomainOpenConsole, /* 7.8.0 */ .nodeGetInfo =3D chNodeGetInfo, /* 7.5.0 */ .domainGetVcpus =3D chDomainGetVcpus, /* 8.0.0 */ --=20 2.55.0 From nobody Mon Sep 14 04:49:17 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787773071; cv=none; d=zohomail.com; s=zohoarc; b=gVg4NvbXxFcWusqklP5kP70zeTisIhd7stQKpYJ5yyzhUIyC45prYXVRM+jZGv4jDJW9HRNs3L37g/swI2KE4EL70RgwNym+d2ZojlI2P1XsmpRdTyAiXHPJCiGz0yPKJYm2Ru1ZNoY39ViE9KLygHXVtiEKetSn6TVYgodDaK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787773071; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=GvRtiN5lqa3vgVhZYkJePdCb4Qh5J/D4PJ0ZcpNonFs=; b=mNzhgpnQx8RxfPP4lqgmkuEy0oC7CDKQWgsvbbJ2Fb8L3BlT+scFEpWHm1V+UNjotff5R7lG3Rtt4POPE8nes46p0DNxdZH6k6kavzhSrsjoOj/NT6Lp3VLNI2NgvSA6lrY01pAp4XMKiE+QAdFld3c1uiR2xlT3OsswlMYzp5o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787773071575215.19359130036844; Wed, 26 Aug 2026 12:37:51 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D911E3F881; Wed, 26 Aug 2026 15:37:49 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 7CA9441BA9 for ; Wed, 26 Aug 2026 15:36:26 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id CE8D53F366; Wed, 26 Aug 2026 15:36:17 -0400 (EDT) Received: from fout-b6-smtp.messagingengine.com (fout-b6-smtp.messagingengine.com [202.12.124.149]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 8C5933F955 for ; Wed, 26 Aug 2026 15:36:16 -0400 (EDT) Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.stl.internal (Postfix) with ESMTP id CA6841D000E3; Wed, 26 Aug 2026 15:31:07 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Wed, 26 Aug 2026 15:31:07 -0400 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Aug 2026 15:31:06 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shotor.com; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1787772667; x= 1787859067; bh=GvRtiN5lqa3vgVhZYkJePdCb4Qh5J/D4PJ0ZcpNonFs=; b=M OkCuCClIKpHe8vDbKTCw6p8ikRFFhMUfw+luW4OpybSWy9kMDeopxLsY5XEZNxRP divDPg8Jwk8IBZhVpT33j/z1oCqUi6+RVOZ4mbJY2OETID+8ab7fayfVB+maFiwZ lJnLLaXJZ+W11ZGZJRIDEdM0/nRtTwumSmp22hXQRTYd7aSq3NGAbDj3W3w6Sl06 QyATghXHoxjPvtWwMvv7dEy4gWjEXoUvxOHATmUMb0iJE5ofBlWCDV78YcH5dHe3 fWK3nLzRaPNWZsmJ6WhjdgLi0TFxfSTePvBwr9DO9CXDQ4rtZYkexBQo/4M4IOTe WCs/hnsJDWTIrn7YK8ALA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1787772667; x=1787859067; bh=G vRtiN5lqa3vgVhZYkJePdCb4Qh5J/D4PJ0ZcpNonFs=; b=HWWOAJZJU26OdRo0C 93AsEC4Q8CbGayUQHhmS+j93fS/oZWrlQuF7h6cjEiJBUzDk9SjPNHkINC4UOh0f l9P/CGd0DjWpX1OUUVfAA0EklQNub5Lhptr8ZPWrX86YH0YVf4MW1G+DQ627befm 86CwNAvGog4HR4pvKd5Tm8XlZdHyG/ynj44oz0op5iLuJaIN7b1MUg6nVZi2ZS/J 6duXq9AzSaVuqkRSTndb/FwnQtuCtZV4Q95oiqQZh03bKHn6h2mTbe9aj5q1pVbB sPOob0aqlY4gj6ZVQMnFOV+RlQL06paxm4/nx3EmorAnnB2LupVm90VGWgPGbtVr psf7A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFSgDNNh2YjSDXpJT63ZxSmQGXTBdCvdkEXWRXBkk5eUBUp7VfhQ6Y3zb1V6+BKCv 7KVkr0haa2ABJsx52wEpEVAPyeIjQmcLcl7slkNCrFbs0Zxts64MRfkDJAonJuRHhaEC7C s6VBnC8yNcGW8LVQbzWJ6fSI16X/EJMvbEUj4PjwUSH/uW5ThPezF6pyUx4Ihe5UMFoZFH WCPssgcug5JpoZ5fwNCHEVxhovMmVEtqJwvIByZpgYj4rX1AAyzJ7116n0NBUrs4QsN2Ym teJRBZkPq6eDvlCSp/G8zNuVtrVvjhemfX+tjwKfUIrFlUI3U75kzGLSshUGuMJ3+/ZssA 84iryyCy8zAfwsSO7AjeWg1aFQxS/AB1xZSSYb7BMC2caWBHfEQ5F4BJtEm7S6bHAntqMM UaC+zIKcj0Y/Fhb6WIaHVw5DZ1jGz68gIsGb0qUiaUg8rhgzxRnKEHipowsTMBCmb9i+vf VFk82dH+UFtya5xDXT2FtN9fELJtkvTJOKb6/8fNbVObrLWo8CHwNsWPFD7I3Asx5kZbS0 WZ/MtV3zLKqHN2qLy4a2X3A0jLuGbb9vZPN5kz2EwRTKBX0siexn05/Q2MJ15CiUfs6xTo LDJgEkd9+1X0If4bhdEuSneiri7DJYMdLmytZL61Nc7COAap/zVl4WYgWQ4g X-ME-Proxy: Feedback-ID: ib8694256:Fastmail From: shotor@shotor.com To: devel@lists.libvirt.org Subject: [PATCH] ch: Add persistent domain support Date: Wed, 26 Aug 2026 21:30:35 +0200 Message-ID: <20260826193035.3670721-1-shotor@shotor.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826084618.3447269-1-shotor@shotor.com> References: <20260826084618.3447269-1-shotor@shotor.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: WG64GW7OWUVMMLT3RKPVELCPSUEYY34J X-Message-ID-Hash: WG64GW7OWUVMMLT3RKPVELCPSUEYY34J X-MailFrom: shotor@shotor.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: shotor X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @shotor.com) X-ZM-MESSAGEID: 1787773073757158500 Content-Type: text/plain; charset="utf-8" From: shotor Libvirt reports Cloud Hypervisor domains as having unknown persistence. Commit 85cf0e4f17ae added support for keeping a separate inactive definition for running domains, but it didn't persist domain definitions to disk or reload them when virtchd restarted. Meaning defined CH domains were still lost across daemon restarts and libvirt couldn't report them as persistent. Follow the approach used by the QEMU driver: save domain definitions to disk when they are defined, reload them during driver initialization, remove the stored configuration when they are undefined, and roll back the in-memory definition if saving fails. Also implement domainIsPersistent so libvirt reports the persistence state correctly. Signed-off-by: shotor --- src/ch/ch_conf.c | 13 +++++++--- src/ch/ch_conf.h | 1 + src/ch/ch_driver.c | 63 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 69 insertions(+), 8 deletions(-) diff --git a/src/ch/ch_conf.c b/src/ch/ch_conf.c index 6896683b7f..793ec33a10 100644 --- a/src/ch/ch_conf.c +++ b/src/ch/ch_conf.c @@ -178,22 +178,26 @@ virCHDriverConfigNew(bool privileged) cfg->logDir =3D g_strdup_printf("%s/log/libvirt/ch", LOCALSTATEDIR= ); cfg->stateDir =3D g_strdup_printf("%s/libvirt/ch", RUNSTATEDIR); cfg->saveDir =3D g_strdup_printf("%s/lib/libvirt/ch/save", LOCALST= ATEDIR); - cfg->configDir =3D g_strdup(SYSCONFDIR "/libvirt"); + cfg->configBaseDir =3D g_strdup(SYSCONFDIR "/libvirt"); + cfg->configDir =3D g_strdup_printf("%s/ch/domains", + cfg->configBaseDir); } else { g_autofree char *rundir =3D NULL; g_autofree char *cachedir =3D NULL; - g_autofree char *configbasedir =3D NULL; + const char *configbasedir =3D NULL; =20 cachedir =3D virGetUserCacheDirectory(); - cfg->logDir =3D g_strdup_printf("%s/ch/log", cachedir); =20 rundir =3D virGetUserRuntimeDirectory(); cfg->stateDir =3D g_strdup_printf("%s/ch/run", rundir); =20 configbasedir =3D virGetUserConfigDirectory(); + cfg->saveDir =3D g_strdup_printf("%s/ch/save", configbasedir); - cfg->configDir =3D g_strdup_printf("%s/ch", configbasedir); + cfg->configBaseDir =3D g_strdup_printf("%s/ch", configbasedir); + cfg->configDir =3D g_strdup_printf("%s/domains", + cfg->configBaseDir); } =20 return cfg; @@ -211,6 +215,7 @@ virCHDriverConfigDispose(void *obj) virCHDriverConfig *cfg =3D obj; =20 g_free(cfg->stateDir); + g_free(cfg->configBaseDir); g_free(cfg->configDir); g_free(cfg->logDir); g_free(cfg->saveDir); diff --git a/src/ch/ch_conf.h b/src/ch/ch_conf.h index 1660762f2b..c3b59bba0d 100644 --- a/src/ch/ch_conf.h +++ b/src/ch/ch_conf.h @@ -51,6 +51,7 @@ struct _virCHDriverConfig { GObject parent; =20 char *stateDir; + char *configBaseDir; char *configDir; char *logDir; char *saveDir; diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c index f85f38eaf2..51c69b799a 100644 --- a/src/ch/ch_driver.c +++ b/src/ch/ch_driver.c @@ -336,11 +336,14 @@ chDomainCreate(virDomainPtr dom) } =20 static virDomainPtr -chDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int f= lags) +chDomainDefineXMLFlags(virConnectPtr conn, + const char *xml, + unsigned int flags) { virCHDriver *driver =3D conn->privateData; g_autoptr(virDomainDef) vmdef =3D NULL; g_autoptr(virDomainDef) oldDef =3D NULL; + g_autoptr(virCHDriverConfig) cfg =3D virCHDriverGetConfig(driver); virDomainObj *vm =3D NULL; virDomainPtr dom =3D NULL; virObjectEvent *event =3D NULL; @@ -382,15 +385,34 @@ chDomainDefineXMLFlags(virConnectPtr conn, const char= *xml, unsigned int flags) goto cleanup; } =20 + if (virDomainDefSave(vm->newDef ? vm->newDef : vm->def, + driver->xmlopt, + cfg->configDir) < 0) + goto cleanup; + vm->persistent =3D 1; + event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_DEFINED, !oldDef ? VIR_DOMAIN_EVENT_DEFINED_ADD= ED : VIR_DOMAIN_EVENT_DEFINED_UPD= ATED); + dom =3D virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id); =20 cleanup: + if (!dom && !vmdef) { + if (oldDef) { + if (virDomainObjIsActive(vm)) + vm->newDef =3D oldDef; + else + vm->def =3D oldDef; + oldDef =3D NULL; + } else { + virCHDomainRemoveInactive(driver, vm); + } + } + virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); =20 @@ -408,6 +430,7 @@ chDomainUndefineFlags(virDomainPtr dom, unsigned int flags) { virCHDriver *driver =3D dom->conn->privateData; + g_autoptr(virCHDriverConfig) cfg =3D virCHDriverGetConfig(driver); virDomainObj *vm; virObjectEvent *event =3D NULL; int ret =3D -1; @@ -425,14 +448,18 @@ chDomainUndefineFlags(virDomainPtr dom, "%s", _("Cannot undefine transient domain")); goto cleanup; } + + if (virDomainDeleteConfig(cfg->configDir, NULL, vm) < 0) + goto cleanup; + event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_UNDEFINED, VIR_DOMAIN_EVENT_UNDEFINED_R= EMOVED); =20 vm->persistent =3D 0; - if (!virDomainObjIsActive(vm)) { + + if (!virDomainObjIsActive(vm)) virCHDomainRemoveInactive(driver, vm); - } =20 ret =3D 0; =20 @@ -467,6 +494,24 @@ static int chDomainIsActive(virDomainPtr dom) return ret; } =20 +static int chDomainIsPersistent(virDomainPtr dom) +{ + virDomainObj *vm; + int ret =3D -1; + + if (!(vm =3D virCHDomainObjFromDomain(dom))) + goto cleanup; + + if (virDomainIsPersistentEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + + ret =3D vm->persistent; + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static int chDomainShutdownFlags(virDomainPtr dom, unsigned int flags) @@ -1493,11 +1538,20 @@ chStateInitialize(bool privileged, if (!(ch_driver->config =3D virCHDriverConfigNew(privileged))) goto cleanup; =20 - driverConf =3D g_strdup_printf("%s/ch.conf", ch_driver->config->config= Dir); + driverConf =3D g_strdup_printf("%s/ch.conf", ch_driver->config->config= BaseDir); =20 if (virCHDriverConfigLoadFile(ch_driver->config, driverConf) < 0) goto cleanup; =20 + if (virDomainObjListLoadAllConfigs(ch_driver->domains, + ch_driver->config->configDir, + NULL, + false, + ch_driver->xmlopt, + NULL, + NULL) < 0) + goto cleanup; + if (!(ch_driver->hostdevMgr =3D virHostdevManagerGetDefault())) goto cleanup; =20 @@ -2550,6 +2604,7 @@ static virHypervisorDriver chHypervisorDriver =3D { .domainGetXMLDesc =3D chDomainGetXMLDesc, /* 7.5.0 */ .domainGetInfo =3D chDomainGetInfo, /* 7.5.0 */ .domainIsActive =3D chDomainIsActive, /* 7.5.0 */ + .domainIsPersistent =3D chDomainIsPersistent, /* 12.7.0 */ .domainOpenConsole =3D chDomainOpenConsole, /* 7.8.0 */ .nodeGetInfo =3D chNodeGetInfo, /* 7.5.0 */ .domainGetVcpus =3D chDomainGetVcpus, /* 8.0.0 */ --=20 2.55.0