From nobody Fri Dec 12 12:53:25 2025 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=1765273724; cv=none; d=zohomail.com; s=zohoarc; b=bAx35nFC6BaoNAo2hdeZUm4ZPey5rovJbmCDlPIs8aZzvwSVjjc1OpDrCZ5ovBR+3jpKk4V46cfEPRqvJOEGFDRLedwZoOnvAP3wvl180zayxU9JDso2wcFv4p5figXLn3SX4j0u+EQKv0pNAsSfOWm7uvJ9eOgBG8Seie++wFY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765273724; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=fV8z8pp7eBzomr85Eol2h+n6nz7B+fZtcij9IfpyXf4=; b=UBm275vxhOAlAbHOYBRoSwnIyo/bspHgNkwUF+eFll+ZfwITOnxrWnzwKbZfAocM3108vUZmO1GPP8w7gQUJEuhfvRMgxp2N1UvI/PDRXjSiti1UMWKEecBAgV4camKRg3Gp73//PtLQsLWtcum6IUZmDO1QNKRTw5lQuFNXFsg= 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 1765273724755208.9473545676476; Tue, 9 Dec 2025 01:48:44 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id C74604419C; Tue, 9 Dec 2025 04:48:23 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 7ABDD43F42; Tue, 9 Dec 2025 04:46:43 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 8BFA641A1C; Tue, 9 Dec 2025 04:46:16 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 AB3C141A1D for ; Tue, 9 Dec 2025 04:46:15 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-580-06zhy1_JNAqpSiCiQygAaA-1; Tue, 09 Dec 2025 04:46:13 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A211C195605A for ; Tue, 9 Dec 2025 09:46:12 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E28BC1956095 for ; Tue, 9 Dec 2025 09:46:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fV8z8pp7eBzomr85Eol2h+n6nz7B+fZtcij9IfpyXf4=; b=Fs79MLthR9Yaj5Pcznl8QXke0EblqLACv6EVVpMxK9r4fEnbdNhl5A4wcSsxChAWG+uFfU 07mClUPPwfZPey4TN7dBtajLpzH8Cdu4LSc+Egw/IWEhn65rsXeYJrEONhVacZrq/TUmcl WlnQKqPXZjm5d4krtXNIFe/NuQIx/Pc= X-MC-Unique: 06zhy1_JNAqpSiCiQygAaA-1 X-Mimecast-MFC-AGG-ID: 06zhy1_JNAqpSiCiQygAaA_1765273572 To: devel@lists.libvirt.org Subject: [PATCH 1/9] qemuMigrationSrcToFile: Don't leak 'qemuFDPass' in cleanup path Date: Tue, 9 Dec 2025 10:46:01 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: G2nv-q9aKi-srHGd2TO1PN1F4m8B8JfgBSWNdHVYN10_1765273572 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: URREHZJZLXXEZ63626UOHK7I2TWTOWKY X-Message-ID-Hash: URREHZJZLXXEZ63626UOHK7I2TWTOWKY X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765273726525158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa A temporary 'qemuFDPass' is used when cleaning up after a migration to a file but it's not freed after use. Declare it as autoptr. Fixes: c2518f7bc7d Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_migration.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 9059f9aa3a..4f9b649b63 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -7325,11 +7325,13 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDo= mainObj *vm, /* Remove fdset passed to qemu and restore max migration bandwidth */ if (qemuDomainObjIsActive(vm)) { if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) =3D=3D 0) { - qemuFDPass *fdPass =3D - qemuFDPassNewFromMonitor("libvirt-outgoing-migrate", priv-= >mon); + g_autoptr(qemuFDPass) fdPass =3D NULL; + + fdPass =3D qemuFDPassNewFromMonitor("libvirt-outgoing-migrate"= , priv->mon); if (fdPass) qemuFDPassTransferMonitorRollback(fdPass, priv->mon); + qemuDomainObjExitMonitor(vm); } --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765274270; cv=none; d=zohomail.com; s=zohoarc; b=T1xpq901rrQBEgvlrP85r4HMLZjgVafuiybrxhQJqu3g6r0mT/olkPSSKrJBuvhIOxFVssqQulfiWLPSzck0KJiD0ncF4i9ynMBCvYSdzLsQQJ/Y3m3VbCpWHgbnWJMw2i0/o8+CGIYaK0aOX7jUD9foB73ZUmfbV2liUSyL26k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765274270; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=mDGC8vRzktcKdGpXnYye2fWHsfX7YhgKMR0CfMBJIWI=; b=KWJjJpMQM5evUQ7e0Bfh1r2oGTNgt3nKzTMxVpc1Rsm06xyER+9fZ3WDAMlGH9SK9PpYw2h3DqVq3D0fZi5WEB+44l/tA/pn7TKVhxVoAFH3NIXkTxKQRnwMkfWBqV8axHhyia3QoE+K7NUGIi/mwJ4lJEO84IbBJ8qy3Jl0eEc= 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 1765274270233344.4230509886668; Tue, 9 Dec 2025 01:57:50 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 3B47B4191E; Tue, 9 Dec 2025 04:57:37 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 0A0C6442A1; Tue, 9 Dec 2025 04:49:02 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 1565243DEA; Tue, 9 Dec 2025 04:46:52 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 AC59443E5E for ; Tue, 9 Dec 2025 04:46:26 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-693-ifFkJ1ZYMJOlCFoGbZVoYA-1; Tue, 09 Dec 2025 04:46:14 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DA81319560B2 for ; Tue, 9 Dec 2025 09:46:13 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2A76D1956095 for ; Tue, 9 Dec 2025 09:46:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mDGC8vRzktcKdGpXnYye2fWHsfX7YhgKMR0CfMBJIWI=; b=QgNS/2Gw74fCEKGkaQ7XDV9Fw6MzkdaWV+dmbeEIzLns2xCnB4NI+WliMCPU6ogSApzjmc L+sR1kl/yOWDi8mvXFs1tUCSFf5Aoxj1NlFM05SpJ+n9Cs8Rn9ig/Ga/oD4RSLydc0DvMA VmdS9u1rcFupewzcyMyehMd6d/l8/EI= X-MC-Unique: ifFkJ1ZYMJOlCFoGbZVoYA-1 X-Mimecast-MFC-AGG-ID: ifFkJ1ZYMJOlCFoGbZVoYA_1765273574 To: devel@lists.libvirt.org Subject: [PATCH 2/9] qemu: snapshot: Setup disks for manual snapshot only when the VM is actually paused Date: Tue, 9 Dec 2025 10:46:02 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Invern8Pt-F3s_dj42_PHWPxMqx5r5nOBFas-agMt3o_1765273574 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CVBKPZVHJ7PIZWWYPL2PAUWLNJ6AUYSX X-Message-ID-Hash: CVBKPZVHJ7PIZWWYPL2PAUWLNJ6AUYSX X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765274270856158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa When creating a snapshot with 'VIR_DOMAIN_SNAPSHOT_CREATE_LIVE' the VM is paused only after dumping the memory state. This means that also the steps to do a 'manual' disk snapshot (deactivation of the block nodes in qemu) must happen only once the VM is paused. Move the manual snapshot setup code after the memory snapshot code. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_snapshot.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 302775af92..bf25c70826 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1707,10 +1707,6 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *driv= er, } } - if (has_manual && - qemuSnapshotCreateActiveExternalDisksManual(vm, snap, VIR_ASYNC_JO= B_SNAPSHOT) < 0) - goto cleanup; - /* We need to collect reply from 'query-named-block-nodes' prior to the * migration step as qemu deactivates bitmaps after migration so the r= esult * would be wrong */ @@ -1769,6 +1765,10 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *driv= er, /* the domain is now paused if a memory snapshot was requested */ + if (has_manual && + qemuSnapshotCreateActiveExternalDisksManual(vm, snap, VIR_ASYNC_JO= B_SNAPSHOT) < 0) + goto cleanup; + if ((ret =3D qemuSnapshotCreateActiveExternalDisks(vm, snap, blockNamedNodeData, f= lags, VIR_ASYNC_JOB_SNAPSHO= T)) < 0) --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765273791; cv=none; d=zohomail.com; s=zohoarc; b=hwsj9bJCI2QlYYlam0SOgr6UDCDVp0mSvNv7qL4ZL0XAxlqlXPA2iiYX7tzqrUpsY53xQfzTqgJhgzbKN4lfTFsQnOrXsNyoOoe3dDGLKucjuBzi92Svix5p2aMHWI7KJWTgMmFZYX1HNPXSH6O/6U6yv2lloL9EzqzZKW2F6PQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765273791; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=RMmck7RCwt29gzDUvyz5PWgtDLV3t/ZxgVPDPWHewz0=; b=A7Hwt1nm2LFvGKzazNweY+XaSMbatSdAjzxVmiTN6EaMcheNQ+tce3UbXQSSRWwDxF0acK75bZkk/zfrNJ1skb0Zq8MLQJmooi6Q8qJypdzN1VrfIWoXjXmQyy74jlUmiAKovMrrjywIx1RzNdJiujzYZfgiUMuNt164gi0wHw0= 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 1765273791772874.0762787929218; Tue, 9 Dec 2025 01:49:51 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9DF054415E; Tue, 9 Dec 2025 04:49:16 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 8522943DCC; Tue, 9 Dec 2025 04:46:57 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id F0C4941A42; Tue, 9 Dec 2025 04:46:18 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 214FC41A1C for ; Tue, 9 Dec 2025 04:46:18 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-651-STIYrSZhNuq7vdE_jr-4Jg-1; Tue, 09 Dec 2025 04:46:15 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2912119560AD for ; Tue, 9 Dec 2025 09:46:15 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4D74F1956095 for ; Tue, 9 Dec 2025 09:46:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273577; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RMmck7RCwt29gzDUvyz5PWgtDLV3t/ZxgVPDPWHewz0=; b=R+vgUD7Z3XyTjTuXV81925ufPKC2i7IDwlKyjkgSqtyJ7vL/EkMph8d21wgCm7AjU9IKr+ AKoWLvysDiroFSkfmtmv1IQScdOgg+SfqN1bkZ8B/RlOR4BdGs5cqZniTfMGXBUM00ndQk 64MJNsRFnoVXUpn22SlmQExzm9+QSzw= X-MC-Unique: STIYrSZhNuq7vdE_jr-4Jg-1 X-Mimecast-MFC-AGG-ID: STIYrSZhNuq7vdE_jr-4Jg_1765273575 To: devel@lists.libvirt.org Subject: [PATCH 3/9] qemuSnapshotPrepare: Prohibit 'manual' disk snapshot mode with VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE flag Date: Tue, 9 Dec 2025 10:46:03 +0100 Message-ID: <04ff89f5f014f1d3f37cddad6ff46497530053c8.1765272832.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: nAklxEn7MGRNXZ9BQwg0tb0AiN9zYpRId1RfCkZ5Yvc_1765273575 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: T2Z56TVLGZTLTKHYPFSN6TBPIRPPPEJP X-Message-ID-Hash: T2Z56TVLGZTLTKHYPFSN6TBPIRPPPEJP X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765273792802158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa If the snapshot has a disk using 'manual' snapshot mode we keep the VM paused until the user resumes it (presumably after they've done steps to take the disk snapshot). Since quiescing is done via the guest agent this means it will not be possible while the VM is paused. Rather than trying to implement complex recovery from this state prevent the use of VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE for the snapshot. The user still can call virDomainFSFreeze/virDomainFSThaw manually. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_snapshot.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index bf25c70826..5b0b52e2ba 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1075,6 +1075,12 @@ qemuSnapshotPrepare(virDomainObj *vm, } } + if (*has_manual && (*flags & VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("'manual' disk snapshot mode requires explici= t quiescing (VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE is not supported)")); + return -1; + } + /* Alter flags to let later users know what we learned. */ if (external && !active) *flags |=3D VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY; --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765273881; cv=none; d=zohomail.com; s=zohoarc; b=iKt4LOpwUggJWYEWFYW2QqeyMsHeaFR0+ypBVz++eXn0FymPs27xZAyN2hUTHvgDExnUbQjRXCEFQtaAA24dH9fVeNWP03i9jEiCZrU/fw1Vw21+BRcpW2FQA/tJzYmhklRd7/lyizFblhWKx6uZhI5niZhnejxeJKKtd/R3LtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765273881; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=H0G2qdARsuAduSD6i+V2sLffa8BsKm1EfoyRGT3gW5s=; b=ZoUR7g5OFAryRJhUsMKoSLR69b75yo7jCVwzS1nYl6t4BHUMtU15yf0YGgf2F9lvvXWA7zqBZ5Lg0sMAhttNdIpoU3JTD8FWPM4+1Imxosw8ThwL97J2dY2SDQnhhXcfk4f21ZN2uBP62hbk1J0mLj5+kvyXuX3zWNHFICQoyaw= 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 1765273881392820.2286311012091; Tue, 9 Dec 2025 01:51:21 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 69C3D43DBA; Tue, 9 Dec 2025 04:50:17 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 8B14743E40; Tue, 9 Dec 2025 04:47:09 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id A8FB741A1D; Tue, 9 Dec 2025 04:46:19 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 E10B241A28 for ; Tue, 9 Dec 2025 04:46:18 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-473-R0puh-k-OBugofhq3aghXg-1; Tue, 09 Dec 2025 04:46:16 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 27E3A195609E for ; Tue, 9 Dec 2025 09:46:16 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 70B191956095 for ; Tue, 9 Dec 2025 09:46:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=H0G2qdARsuAduSD6i+V2sLffa8BsKm1EfoyRGT3gW5s=; b=iCPN3Jxd4JNJFCf9dkXRdWrSq8gkWoSifnC7AoBoUYb1otYHCE6TMyPSazpXvsfXbg9ra5 f8n3xzMB4EtPbqM2aDaLoJL2HSDK2HsNeD4CMuQmaYjZYDjMJGRHczHvuCW936MWyvWhTP 8XTsP2YUwGLYyuJJeE0qi+21miYO+sc= X-MC-Unique: R0puh-k-OBugofhq3aghXg-1 X-Mimecast-MFC-AGG-ID: R0puh-k-OBugofhq3aghXg_1765273576 To: devel@lists.libvirt.org Subject: [PATCH 4/9] qemu: Use 'virQEMUSaveFormat' type everywhere except qemu_conf Date: Tue, 9 Dec 2025 10:46:04 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 0MgOpax-8Vvs6jzArXw-7sWBep1cuJFWc_gWeoB5-rw_1765273576 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: B6NNY34LHB5AGRYI2EQCJFPVRFV5Q6YS X-Message-ID-Hash: B6NNY34LHB5AGRYI2EQCJFPVRFV5Q6YS X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765273883197158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Convert all code refering to the save image type to use the proper enum value. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_driver.c | 18 ++++++++++++------ src/qemu/qemu_saveimage.c | 4 ++-- src/qemu/qemu_saveimage.h | 4 ++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f2e024dae3..d88c0833ad 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2583,7 +2583,7 @@ static int qemuDomainSaveInternal(virQEMUDriver *driver, virDomainObj *vm, const char *path, - int format, + virQEMUSaveFormat format, virCommand *compressor, const char *xmlin, virTypedParameterPtr params, @@ -2823,7 +2823,7 @@ qemuDomainSaveParams(virDomainPtr dom, const char *to =3D NULL; const char *dxml =3D NULL; const char *formatstr =3D NULL; - int format =3D cfg->saveImageFormat; + virQEMUSaveFormat format =3D cfg->saveImageFormat; int ret =3D -1; virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | @@ -2863,10 +2863,16 @@ qemuDomainSaveParams(virDomainPtr dom, return qemuDomainManagedSaveHelper(driver, vm, dxml, flags); } - if (formatstr && (format =3D qemuSaveFormatTypeFromString(formatstr)) = < 0) { - virReportError(VIR_ERR_OPERATION_FAILED, - _("Invalid image_format '%1$s'"), formatstr); - goto cleanup; + if (formatstr) { + int formatVal; + + if ((formatVal =3D qemuSaveFormatTypeFromString(formatstr)) < 0) { + virReportError(VIR_ERR_OPERATION_FAILED, + _("Invalid image_format '%1$s'"), formatstr); + goto cleanup; + } + + format =3D formatVal; } if (qemuSaveImageGetCompressionProgram(format, &compressor, "save") < = 0) diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index 145a0f4832..48f8220dee 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -79,7 +79,7 @@ virQEMUSaveData * virQEMUSaveDataNew(char *domXML, qemuDomainSaveCookie *cookieObj, bool running, - int format, + virQEMUSaveFormat format, virDomainXMLOption *xmlopt) { virQEMUSaveData *data =3D NULL; @@ -551,7 +551,7 @@ qemuSaveImageCreate(virQEMUDriver *driver, * Returns -1 on failure, 0 on success. */ int -qemuSaveImageGetCompressionProgram(int format, +qemuSaveImageGetCompressionProgram(virQEMUSaveFormat format, virCommand **compressor, const char *styleFormat) { diff --git a/src/qemu/qemu_saveimage.h b/src/qemu/qemu_saveimage.h index 15b73eb395..0a22ee5f05 100644 --- a/src/qemu/qemu_saveimage.h +++ b/src/qemu/qemu_saveimage.h @@ -114,7 +114,7 @@ qemuSaveImageOpen(virQEMUDriver *driver, ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4); int -qemuSaveImageGetCompressionProgram(int format, +qemuSaveImageGetCompressionProgram(virQEMUSaveFormat format, virCommand **compressor, const char *styleFormat) ATTRIBUTE_NONNULL(2); @@ -153,7 +153,7 @@ virQEMUSaveData * virQEMUSaveDataNew(char *domXML, qemuDomainSaveCookie *cookieObj, bool running, - int format, + virQEMUSaveFormat format, virDomainXMLOption *xmlopt); void --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765274204; cv=none; d=zohomail.com; s=zohoarc; b=flJ9N7kSKqF2vUahCHHrfrsHI+635G76OIPRG51HVKG7A+3qVCMX+TK+kO9xOVhB7tYyhl2tcdBYdXRrUw/sNTz4HuMggdPYM/BaDlwfdRD2CMhUYs4wJuYvR3zGDqtEl7cEBKuXgKf15VWyfrNbFSfR9SjvjE+44cSSamBfqhg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765274204; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=WzCw1Jon9l9DcGN/0G7EYxLxte166jKCUtigDyWMR7s=; b=MvbvJVppr8EanxPXdEWRI7CKYwuXltDF3WEQxqtD+iwtFZMt3SensPCZrHfx2JNziWIZVg2nt2YGBxNlgF00yBFTyJ6QJoIcdnSQr3qvrEe9l4heCeHo27CV1wNWDFWPbne9MdT+xDfiGIG0ylcKw7TTW9cj2Bm4NJbT9uCbSGg= 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 1765274204249904.4690709780508; Tue, 9 Dec 2025 01:56:44 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 5999E41966; Tue, 9 Dec 2025 04:56:42 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id A6039441DC; Tue, 9 Dec 2025 04:48:48 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 8EA6943E14; Tue, 9 Dec 2025 04:46:40 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 E972243DB7 for ; Tue, 9 Dec 2025 04:46:24 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-509-h7uldzXnOJ2N09Izs6OZwQ-1; Tue, 09 Dec 2025 04:46:18 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4F69F195606B for ; Tue, 9 Dec 2025 09:46:17 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 99C4F1956095 for ; Tue, 9 Dec 2025 09:46:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WzCw1Jon9l9DcGN/0G7EYxLxte166jKCUtigDyWMR7s=; b=NQ9/YXwQYzEQwb2CZL/KKlF0xRA/6OfRaqGplbbXnczBZNORSJH2lD6vAFBFoVoSYchCeT IclhZy2UBavifL742Zrfn0JA7BKvQ5pJZvjvfEo1rI5c09neIMXat4weCQOohD7KwsjLFn T6pWwasun4rKqdQ+iwK7uO91d9QW7iI= X-MC-Unique: h7uldzXnOJ2N09Izs6OZwQ-1 X-Mimecast-MFC-AGG-ID: h7uldzXnOJ2N09Izs6OZwQ_1765273577 To: devel@lists.libvirt.org Subject: [PATCH 5/9] qemu: conf: Use proper type for (save|dump|snapshot)ImageFormat Date: Tue, 9 Dec 2025 10:46:05 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: MDPqZ0iriuXipt3XYCVKjxiOmBnM1q0sa-AZmfF6RRo_1765273577 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GZI2X5JP4PUXC3BZEU2DGLB4FKAILKGL X-Message-ID-Hash: GZI2X5JP4PUXC3BZEU2DGLB4FKAILKGL X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765274206616158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Extract the definition of the enum into a separate header file and convert the config struct to use the proper types. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_conf.c | 48 ++++++++++++++++++++++---------- src/qemu/qemu_conf.h | 7 +++-- src/qemu/qemu_saveimage.h | 20 ++----------- src/qemu/qemu_saveimage_format.h | 25 +++++++++++++++++ 4 files changed, 64 insertions(+), 36 deletions(-) create mode 100644 src/qemu/qemu_saveimage_format.h diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 242955200a..de6e51177a 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -686,29 +686,47 @@ virQEMUDriverConfigLoadSaveEntry(virQEMUDriverConfig = *cfg, if (virConfGetValueString(conf, "save_image_format", &savestr) < 0) return -1; - if (savestr && (cfg->saveImageFormat =3D qemuSaveFormatTypeFromString(= savestr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Invalid save_image_format '%1$s'"), - savestr); - return -1; + if (savestr) { + int formatVal; + + if ((formatVal =3D qemuSaveFormatTypeFromString(savestr)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid save_image_format '%1$s'"), + savestr); + return -1; + } + + cfg->saveImageFormat =3D formatVal; } if (virConfGetValueString(conf, "dump_image_format", &dumpstr) < 0) return -1; - if (dumpstr && (cfg->dumpImageFormat =3D qemuSaveFormatTypeFromString(= dumpstr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Invalid dump_image_format '%1$s'"), - dumpstr); - return -1; + if (dumpstr) { + int formatVal; + + if ((formatVal =3D qemuSaveFormatTypeFromString(dumpstr)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid dump_image_format '%1$s'"), + dumpstr); + return -1; + } + + cfg->dumpImageFormat =3D formatVal; } if (virConfGetValueString(conf, "snapshot_image_format", &snapstr) < 0) return -1; - if (snapstr && (cfg->snapshotImageFormat =3D qemuSaveFormatTypeFromStr= ing(snapstr)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Invalid snapshot_image_format '%1$s'"), - snapstr); - return -1; + if (snapstr) { + int formatVal; + + if ((formatVal =3D qemuSaveFormatTypeFromString(snapstr)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid snapshot_image_format '%1$s'"), + snapstr); + return -1; + } + + cfg->snapshotImageFormat =3D formatVal; } if (virConfGetValueString(conf, "auto_dump_path", &cfg->autoDumpPath) = < 0) diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index edb65c99f4..c284e108a1 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -37,6 +37,7 @@ #include "locking/lock_manager.h" #include "qemu_capabilities.h" #include "qemu_nbdkit.h" +#include "qemu_saveimage_format.h" #include "virclosecallbacks.h" #include "virhostdev.h" #include "virfile.h" @@ -216,9 +217,9 @@ struct _virQEMUDriverConfig { bool securityDefaultConfined; bool securityRequireConfined; - int saveImageFormat; - int dumpImageFormat; - int snapshotImageFormat; + virQEMUSaveFormat saveImageFormat; + virQEMUSaveFormat dumpImageFormat; + virQEMUSaveFormat snapshotImageFormat; char *autoDumpPath; bool autoDumpBypassCache; diff --git a/src/qemu/qemu_saveimage.h b/src/qemu/qemu_saveimage.h index 0a22ee5f05..1fd96751a2 100644 --- a/src/qemu/qemu_saveimage.h +++ b/src/qemu/qemu_saveimage.h @@ -21,6 +21,7 @@ #include "virconftypes.h" #include "qemu_domain.h" +#include "qemu_saveimage_format.h" /* It would be nice to replace 'Qemud' with 'Qemu' but * this magic string is ABI, so it can't be changed @@ -31,24 +32,7 @@ G_STATIC_ASSERT(sizeof(QEMU_SAVE_MAGIC) =3D=3D sizeof(QEMU_SAVE_PARTIAL)); -typedef enum { - QEMU_SAVE_FORMAT_RAW =3D 0, - QEMU_SAVE_FORMAT_GZIP =3D 1, - QEMU_SAVE_FORMAT_BZIP2 =3D 2, - /* - * Deprecated by xz and never used as part of a release - * QEMU_SAVE_FORMAT_LZMA - */ - QEMU_SAVE_FORMAT_XZ =3D 3, - QEMU_SAVE_FORMAT_LZOP =3D 4, - QEMU_SAVE_FORMAT_ZSTD =3D 5, - QEMU_SAVE_FORMAT_SPARSE =3D 6, - /* Note: add new members only at the end. - These values are used in the on-disk format. - Do not change or re-use numbers. */ - - QEMU_SAVE_FORMAT_LAST -} virQEMUSaveFormat; +/* enum virQEMUSaveFormat is declared in qemu_saveimage_format.h */ VIR_ENUM_DECL(qemuSaveFormat); typedef struct _virQEMUSaveHeader virQEMUSaveHeader; diff --git a/src/qemu/qemu_saveimage_format.h b/src/qemu/qemu_saveimage_for= mat.h new file mode 100644 index 0000000000..53756f9fff --- /dev/null +++ b/src/qemu/qemu_saveimage_format.h @@ -0,0 +1,25 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#pragma once + +/* This enum resides in a separate file to allow inclusion into qemu_conf.= h */ +typedef enum { + QEMU_SAVE_FORMAT_RAW =3D 0, + QEMU_SAVE_FORMAT_GZIP =3D 1, + QEMU_SAVE_FORMAT_BZIP2 =3D 2, + /* + * Deprecated by xz and never used as part of a release + * QEMU_SAVE_FORMAT_LZMA + */ + QEMU_SAVE_FORMAT_XZ =3D 3, + QEMU_SAVE_FORMAT_LZOP =3D 4, + QEMU_SAVE_FORMAT_ZSTD =3D 5, + QEMU_SAVE_FORMAT_SPARSE =3D 6, + /* Note: add new members only at the end. + These values are used in the on-disk format. + Do not change or re-use numbers. */ + + QEMU_SAVE_FORMAT_LAST +} virQEMUSaveFormat; --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765273978; cv=none; d=zohomail.com; s=zohoarc; b=Ulxn/AqlKaPpvsvMMuHr57ow0BuGbov1k8cMO/NlgTZMhJy6oaCShKwzDpUwhb48b9i0326SDUjTSp6PwzXmtUFutOpTMKnHi7skH5laNQDL7t7Y1Dq8I94zaBdGkSQB+rWLol96Jdb1ozn1e9tOPslQXEnqSI9kY4KKq0nU5Ek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765273978; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=H7+P8Z5lpX5htQbiRp4qGGXWicJcVKz6jd80COcmiMQ=; b=THXl1C1cruFZ0GaJVi6KlBACJQvHW7xBwW570/MtC1rJNuwJK/vSGqx1U10qI8bkdQGIKvFDidxpMusZ545LI0KvaWusUYE2fqnICO/voqSAaysvS4UJYaDX1ePKfjinKAx1/JgOkHdUz7kBSdv0nck65CG5mbhizbvSspagRPw= 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 1765273978403418.88249248437126; Tue, 9 Dec 2025 01:52:58 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 4D62B41974; Tue, 9 Dec 2025 04:52:54 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 4299E43E3F; Tue, 9 Dec 2025 04:47:47 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id E218643DD1; Tue, 9 Dec 2025 04:46:34 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 7C53B3F8EA for ; Tue, 9 Dec 2025 04:46:22 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-197-46ZBemXEMwWtzfgFNh-0Fg-1; Tue, 09 Dec 2025 04:46:20 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6EAB91956080 for ; Tue, 9 Dec 2025 09:46:18 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7A3E1956095 for ; Tue, 9 Dec 2025 09:46:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=H7+P8Z5lpX5htQbiRp4qGGXWicJcVKz6jd80COcmiMQ=; b=jG5QXkq7HWKu9IlIL9Qk0v0dIKyr7JsBC4Fnjpd/iuh/EpB6w44uGOlXaUdavz1OUqwt7V 8tVv/3hS19B9mGobDxzP4ehiGBCiBZBiDFu/jsNG0wHEf7Tf1H6N6ZVycSjGTVDl5uxJtO fbHM1QNUgLpNm53A9bCAVxSX8UI35oc= X-MC-Unique: 46ZBemXEMwWtzfgFNh-0Fg-1 X-Mimecast-MFC-AGG-ID: 46ZBemXEMwWtzfgFNh-0Fg_1765273578 To: devel@lists.libvirt.org Subject: [PATCH 6/9] include: Create constants for save image format values Date: Tue, 9 Dec 2025 10:46:06 +0100 Message-ID: <2e53572c82860ab7400962fcbab0da30c2f38e0b.1765272832.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 23l4o5qPV_iZ_qQ8TvecqKI7Ml-_Ttg1TWYkEZsgJXc_1765273578 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: NRA5DFNZU6A5P73773CZLSKWZ4MEUU7F X-Message-ID-Hash: NRA5DFNZU6A5P73773CZLSKWZ4MEUU7F X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765273979623158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The 'VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT' typed parameter for 'virDomainSaveParams' is implemented as a string but really encodes an enumeration of supported types. We can't change the format any more but can export the corresponding types as constants. Additionally this also mentions the missing 'sparse' format. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- include/libvirt/libvirt-domain.h | 87 ++++++++++++++++++++++++++++++-- src/qemu/qemu_saveimage.c | 14 ++--- 2 files changed, 91 insertions(+), 10 deletions(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 16fac6b085..893359aaae 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -1702,14 +1702,95 @@ int virDomainRestoreParams (vi= rConnectPtr conn, * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT: * * an optional parameter used to specify the format of the save image. - * Valid formats are raw, zstd, lzop, gzip, bzip2, and xz. If not - * specified, the save_image_format setting in qemu.conf is used, which - * defaults to raw. As VIR_TYPED_PARAM_STRING. + * Valid format strings are represented by constants: + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_RAW + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_GZIP + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_BZIP2 + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_XZ + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_LZOP + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_ZSTD + * - VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_SPARSE + * + * In the qemu driver, if not specified, the save_image_format setting in + * qemu.conf is used, which defaults to VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT= _RAW. + * + * As VIR_TYPED_PARAM_STRING. * * Since: 11.2.0 */ # define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT "image_format" + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_RAW: + * + * raw uncompressed format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_RAW "raw" + + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_GZIP: + * + * gzip compressed format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_GZIP "gzip" + + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_BZIP2: + * + * bzip2 compressed format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_BZIP2 "bzip2" + + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_XZ: + * + * xz compressed format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_XZ "xz" + + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_LZOP: + * + * lzop compressed format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_LZOP "lzop" + + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_ZSTD: + * + * zstd compressed format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_ZSTD "zstd" + + +/** + * VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_SPARSE: + * + * uncompressed sparse file format for the save image + * + * Since: 12.0.0 + */ +# define VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_SPARSE "sparse" + + /* * VIR_DOMAIN_SAVE_PARAM_PARALLEL_CHANNELS: * diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index 48f8220dee..58a3f96575 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -39,13 +39,13 @@ VIR_LOG_INIT("qemu.qemu_saveimage"); VIR_ENUM_IMPL(qemuSaveFormat, QEMU_SAVE_FORMAT_LAST, - "raw", - "gzip", - "bzip2", - "xz", - "lzop", - "zstd", - "sparse", + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_RAW, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_GZIP, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_BZIP2, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_XZ, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_LZOP, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_ZSTD, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_SPARSE, ); static void --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765273952; cv=none; d=zohomail.com; s=zohoarc; b=Yb4AtqWBfaRo0BhtmFrd4bjzcvWzgXXHipyk2MAwgXGFNdS8RGRHgaiEOjO3p089SHYRzoDexfiKm8WhKKoCOfD3iNXfKMipJ8r9BEjxTxagDTYsv4JP3PTfcnjUvVEVoeOQ9536J0MA0iY4jgAEsHARUfOKTcL+jlZy7RGuKu8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765273952; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=tYMIGQ7J18wohQX3pj55YHxVKHZBnEw8QGQvLXJ2hVw=; b=V6sSaDHlWZu2S5Btfg2+m95WdkE3O+43xeq1/kmQoo3RhIzbForRZiMfP3QlW3ngaoZkEZkNJZlrYLSKsNQw762zqmuLnMFtrQjroJ5O/P2ul0oWTMqaFfBx35XVpS/TrSsl6QfBHysuDZEnbfbhGV6bQb+/WONwzkR9S7zgJ1I= 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 1765273952532502.4487295999817; Tue, 9 Dec 2025 01:52:32 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 7FE6F43DF4; Tue, 9 Dec 2025 04:51:45 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id D92F741840; Tue, 9 Dec 2025 04:47:20 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9B0C043EFF; Tue, 9 Dec 2025 04:46:31 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 1ACE33F366 for ; Tue, 9 Dec 2025 04:46:22 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-301-C8Oij5s_NRa75ZdelBF3lw-1; Tue, 09 Dec 2025 04:46:20 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 908E71956052 for ; Tue, 9 Dec 2025 09:46:19 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D61401956095 for ; Tue, 9 Dec 2025 09:46:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tYMIGQ7J18wohQX3pj55YHxVKHZBnEw8QGQvLXJ2hVw=; b=KAE78WnWvjrJAoPnmSEFab/amSs3lKkP7JNMQyxnbGrnKGOcXiFfXw8Uxeml9KSUvY8RyH U2hwcFAn1o5ucW4/XMZFs2+Fgb9rrmUFQusJ9rmEQ9eEwqBcGq+EgC0dSTisbuoNL7UZvl yuOv5s+JITc3dD+YLYAJD2cXxbkL5P8= X-MC-Unique: C8Oij5s_NRa75ZdelBF3lw-1 X-Mimecast-MFC-AGG-ID: C8Oij5s_NRa75ZdelBF3lw_1765273579 To: devel@lists.libvirt.org Subject: [PATCH 7/9] virsh: Add completer for '--image-format' option of 'save' command Date: Tue, 9 Dec 2025 10:46:07 +0100 Message-ID: <9f2c4579fe18d4470b9f602a2c0e090cc503b5b5.1765272832.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: LPoOiTLKrNuNeFAWgMN8_Sn147RFNlGMCeIJHlmhyyo_1765273579 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: FGJP4XEFOJPB6QISUEWNTXJNC2GWZPZU X-Message-ID-Hash: FGJP4XEFOJPB6QISUEWNTXJNC2GWZPZU X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765273953513158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- tools/virsh-domain.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 6e18d195e6..cb9dd069b6 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -4528,6 +4528,26 @@ static const vshCmdInfo info_save =3D { .desc =3D N_("Save the RAM state of a running domain."), }; + +static char ** +virshCompleteSaveImageFormat(vshControl *ctl G_GNUC_UNUSED, + const vshCmd *cmd G_GNUC_UNUSED, + unsigned int completerflags G_GNUC_UNUSED) +{ + const char *formats[] =3D { + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_RAW, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_GZIP, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_BZIP2, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_XZ, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_LZOP, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_ZSTD, + VIR_DOMAIN_SAVE_PARAM_IMAGE_FORMAT_SPARSE, + NULL + }; + + return g_strdupv((char **) formats); +} + static const vshCmdOptDef opts_save[] =3D { VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE), {.name =3D "file", @@ -4546,6 +4566,7 @@ static const vshCmdOptDef opts_save[] =3D { }, {.name =3D "image-format", .type =3D VSH_OT_STRING, + .completer =3D virshCompleteSaveImageFormat, .help =3D N_("format of the save image file") }, {.name =3D "xml", --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765274117; cv=none; d=zohomail.com; s=zohoarc; b=W2/0WJQmUa1chgGWUYAhlvvLxLRWuf7f9Jlz2Ujpt5TIT5kM1adnSLgEEM9PSUmTeo/QmJ/aFGWLMMvyRg5aOUeuR915uA0ClNtZhPSSG9ohqgJrYinnh7ejige47anmWeHhfWiTZJBEwV//FGbl48GZADV3HlNde6ePA43VRFg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765274117; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=KEseQNrC368flQLUz1nsuk1q42LlyAekCxgyXLIpTIQ=; b=FxRy7jxoBXk/j5DFUSITJ44yc8OSSK6Vh6X6q0punbFwq0M7yA37mRClJd9UI3nP6N2DCFbqGuANbNhQ9nTcQ1jhEAAZGfAtzauKadSYPS0Bb4LjyJZkD9YF8qpw48CHW6aL12xmXu9ldDKKCzViBrpLgfGmVFrO5LNqqnqEyvs= 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 1765274117263876.0723771243104; Tue, 9 Dec 2025 01:55:17 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 77EEF43EF3; Tue, 9 Dec 2025 04:55:16 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id C70B34421D; Tue, 9 Dec 2025 04:48:33 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 97BE441882; Tue, 9 Dec 2025 04:46:38 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 B039241966 for ; Tue, 9 Dec 2025 04:46:23 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-226-jwWkGPSXOxGVyTSkK8f5mw-1; Tue, 09 Dec 2025 04:46:21 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CEEA91956053 for ; Tue, 9 Dec 2025 09:46:20 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0C3C31956095 for ; Tue, 9 Dec 2025 09:46:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KEseQNrC368flQLUz1nsuk1q42LlyAekCxgyXLIpTIQ=; b=QpyOfLD464o51nID1qps/WCFsLi8z835dLJnTFmfJcU7USMunl5K3Ov8pZ2a8u3Vjn7fpq jCJcO+7VuvU3cwXuUpY+4P362pTi/9WevRHV2Yu9DyqXCYSROeGZyUoEyD8UqDxjYVXF4T znxA75xYsVZgCPC+5+sYBKIGKzP/xuw= X-MC-Unique: jwWkGPSXOxGVyTSkK8f5mw-1 X-Mimecast-MFC-AGG-ID: jwWkGPSXOxGVyTSkK8f5mw_1765273580 To: devel@lists.libvirt.org Subject: [PATCH 8/9] qemuMigrationSrcToFile: Don't cross-contaminate 'flags' variable Date: Tue, 9 Dec 2025 10:46:08 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: QsJXeetxQBPezeFfZnmSGejabQJ0Db04lRz0w89xUQo_1765273580 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: A4PNXY7YILF73PA36QAMWO4PBSWIX4C4 X-Message-ID-Hash: A4PNXY7YILF73PA36QAMWO4PBSWIX4C4 X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765274118411158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The meaning of 'flags' is context dependant. 'qemuMigrationSrcToFile' expects 'virDomainSaveRestoreFlags' rather than migration flags which is not expected based on the location of the function. Why this is wrong is clearly visible in 'doCoreDump' which passes in 'dump_flags' which are actually 'virDomainCoreDumpFlags' and the values are different: VIR_DUMP_BYPASS_CACHE =3D (1 << 2) VIR_DOMAIN_SAVE_BYPASS_CACHE =3D 1 << 0 Since it checks only for VIR_DOMAIN_SAVE_BYPASS_CACHE pass it in as a boolean instead. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_driver.c | 4 +++- src/qemu/qemu_migration.c | 8 ++++---- src/qemu/qemu_migration.h | 2 +- src/qemu/qemu_saveimage.c | 4 +++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d88c0833ad..cca9d06786 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3137,7 +3137,9 @@ doCoreDump(virQEMUDriver *driver, goto cleanup; if (qemuMigrationSrcToFile(driver, vm, path, &fd, compressor, - dump_params, dump_flags, VIR_ASYNC_JOB_= DUMP) < 0) + dump_params, + (dump_flags & VIR_DUMP_BYPASS_CACHE), + VIR_ASYNC_JOB_DUMP) < 0) goto cleanup; } diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 4f9b649b63..1371742529 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -7210,7 +7210,7 @@ qemuMigrationSrcToSparseFile(virQEMUDriver *driver, virDomainObj *vm, const char *path, int *fd, - unsigned int flags, + bool bypassCache, virDomainAsyncJob asyncJob) { g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); @@ -7222,7 +7222,7 @@ qemuMigrationSrcToSparseFile(virQEMUDriver *driver, /* When using directio with mapped-ram, qemu needs two fds. One with * O_DIRECT set writing the memory, and another without it set for * writing small bits of unaligned state. */ - if ((flags & VIR_DOMAIN_SAVE_BYPASS_CACHE)) { + if (bypassCache) { directFlag =3D virFileDirectFdFlag(); if (directFlag < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", @@ -7259,7 +7259,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDoma= inObj *vm, int *fd, virCommand *compressor, qemuMigrationParams *migParams, - unsigned int flags, + bool bypassCache, virDomainAsyncJob asyncJob) { qemuDomainObjPrivate *priv =3D vm->privateData; @@ -7293,7 +7293,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDoma= inObj *vm, if (migParams && qemuMigrationParamsCapEnabled(migParams, QEMU_MIGRATION_CAP_MAPPED= _RAM)) - rc =3D qemuMigrationSrcToSparseFile(driver, vm, path, fd, flags, a= syncJob); + rc =3D qemuMigrationSrcToSparseFile(driver, vm, path, fd, bypassCa= che, asyncJob); else rc =3D qemuMigrationSrcToLegacyFile(driver, vm, *fd, compressor, a= syncJob); diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 50910ecb1f..51341f453d 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -244,7 +244,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, int *fd, virCommand *compressor, qemuMigrationParams *migParams, - unsigned int flags, + bool bypassCache, virDomainAsyncJob asyncJob) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT; diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index 58a3f96575..1b68a09595 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -501,7 +501,9 @@ qemuSaveImageCreate(virQEMUDriver *driver, goto cleanup; /* Perform the migration */ - if (qemuMigrationSrcToFile(driver, vm, path, &fd, compressor, savePara= ms, flags, asyncJob) < 0) + if (qemuMigrationSrcToFile(driver, vm, path, &fd, compressor, savePara= ms, + (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE), + asyncJob) < 0) goto cleanup; /* Touch up file header to mark image complete. */ --=20 2.52.0 From nobody Fri Dec 12 12:53:25 2025 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=1765274046; cv=none; d=zohomail.com; s=zohoarc; b=HyZ9rtHkdI2inNSy4f7whdczc4C5yLlLtRkWlFdyc/DxLsMxS/AWjbFZjgAfDQ0TBPVnLfTiyC4gydS8u4PNGcj+TNnycPBxkMlpJcJbEvRBZ4eyqPHpdNtBdk/BeCRzW4gZQYyv1Z4eKVeWBST2I1HdXNTi42B1GWKcVBGs+Sk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765274046; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=ezCvxq8oKqcIBa5JJE7vHjYf6hMcQqWfLju7TpYBemU=; b=aY2HYfk3vX0vuL5nxe/fju9ODzYGx2xUH1BQX/aKa+y7mLpVpYEUdA1bJEDe2b4gVK3HZwnFxZ/46CJBBkGRHA3nQnH/V2AfMc4tBgD2+PM5l/W5mdH42QLWOVAkzAeCGteDez2IPsWk8bG2KZjGZF02WgYV7t/BVK+zjtoPyzE= 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 1765274046360422.94112864174986; Tue, 9 Dec 2025 01:54:06 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 5D8A43F953; Tue, 9 Dec 2025 04:54:05 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id BE10B43EAC; Tue, 9 Dec 2025 04:48:03 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id CFF35419A2; Tue, 9 Dec 2025 04:46:37 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 1CC0441A49 for ; Tue, 9 Dec 2025 04:46:24 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-403-3EXaoQEbNu6sIppFtTfotg-1; Tue, 09 Dec 2025 04:46:22 -0500 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D711E18002F5 for ; Tue, 9 Dec 2025 09:46:21 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2D8001956095 for ; Tue, 9 Dec 2025 09:46:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ezCvxq8oKqcIBa5JJE7vHjYf6hMcQqWfLju7TpYBemU=; b=FjY/+Pwlg2X4jZMWVph2izmzcn5zENEgO3i4/t50sB4hsb6GJqECuc5QZMhwHp8gRUuog1 811RzX61wSC0pjpf5xvQ97IHCaqp29upkiUMaTDAzjikc0r8Q+qhwfp3ZOhk0NuW6O3twm LtUD7YEXkYdEJqdYirysb/WJ0QJe5W0= X-MC-Unique: 3EXaoQEbNu6sIppFtTfotg-1 X-Mimecast-MFC-AGG-ID: 3EXaoQEbNu6sIppFtTfotg_1765273581 To: devel@lists.libvirt.org Subject: [PATCH 9/9] qemuMigrationParamsForSave: Don't take opaque 'flags' Date: Tue, 9 Dec 2025 10:46:09 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: gBKGs33EMoPEszyX8ONwz47FMihPHq11bpmgKeenBks_1765273581 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: JS2F47EYN5N4XAERMYQCYHXY4GWO4NIY X-Message-ID-Hash: JS2F47EYN5N4XAERMYQCYHXY4GWO4NIY X-MailFrom: pkrempa@redhat.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 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: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765274048037158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Similarly to previous commit, 'flags' is really opaque. The function lives in migration code and similar functions there expect migration flags. Here we get virDomainSaveRestoreFlags. Here at least the dump code handles it properly and passes VIR_DOMAIN_SAVE_BYPASS_CACHE rather than VIR_DUMP_BYPASS_CACHE. Note: We, in many cases, encourage use of 'flags' instead of a bunch of boolean parameters. Since C doesn't do proper type checks on enums and in fact with 'flags' we pass a binary or of some flags rather than pure options from the enum there isn't really an elegant solution that would be enforced by the compiler and easy on eyes. With a bunch of booleans at least anyone reading the code will need to look up the function definition to see the header rather than assume that passing in 'flags' is fine without properly checking *which* flags are accepted by the function. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_driver.c | 7 ++++--- src/qemu/qemu_migration_params.c | 4 ++-- src/qemu/qemu_migration_params.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index cca9d06786..3c6dd97c04 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2679,7 +2679,7 @@ qemuDomainSaveInternal(virQEMUDriver *driver, if (!(saveParams =3D qemuMigrationParamsForSave(params, nparams, format =3D=3D QEMU_SAVE_= FORMAT_SPARSE, - flags))) + (flags & VIR_DOMAIN_SAVE= _BYPASS_CACHE)))) goto endjob; ret =3D qemuSaveImageCreate(driver, vm, path, data, compressor, @@ -5798,7 +5798,8 @@ qemuDomainRestoreInternal(virConnectPtr conn, goto cleanup; sparse =3D data->header.format =3D=3D QEMU_SAVE_FORMAT_SPARSE; - if (!(restoreParams =3D qemuMigrationParamsForSave(params, nparams, sp= arse, flags))) + if (!(restoreParams =3D qemuMigrationParamsForSave(params, nparams, sp= arse, + (flags & VIR_DOMAIN_S= AVE_BYPASS_CACHE)))) goto cleanup; fd =3D qemuSaveImageOpen(driver, path, @@ -6130,7 +6131,7 @@ qemuDomainObjRestore(virConnectPtr conn, sparse =3D data->header.format =3D=3D QEMU_SAVE_FORMAT_SPARSE; if (!(restoreParams =3D qemuMigrationParamsForSave(NULL, 0, sparse, - bypass_cache ? VIR_DO= MAIN_SAVE_BYPASS_CACHE : 0))) + bypass_cache))) return -1; fd =3D qemuSaveImageOpen(driver, path, bypass_cache, sparse, &wrapperF= d, false); diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_par= ams.c index b79bbad5c2..dd47516742 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -800,7 +800,7 @@ qemuMigrationParams * qemuMigrationParamsForSave(virTypedParameterPtr params, int nparams, bool sparse, - unsigned int flags) + bool bypassCache) { g_autoptr(qemuMigrationParams) saveParams =3D NULL; int nchannels =3D 0; @@ -837,7 +837,7 @@ qemuMigrationParamsForSave(virTypedParameterPtr params, saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].value.i = =3D nchannels; saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].set =3D = true; - if (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) { + if (bypassCache) { saveParams->params[QEMU_MIGRATION_PARAM_DIRECT_IO].value.b =3D= true; saveParams->params[QEMU_MIGRATION_PARAM_DIRECT_IO].set =3D tru= e; } diff --git a/src/qemu/qemu_migration_params.h b/src/qemu/qemu_migration_par= ams.h index 9d771d519d..b7a829b85a 100644 --- a/src/qemu/qemu_migration_params.h +++ b/src/qemu/qemu_migration_params.h @@ -92,7 +92,7 @@ qemuMigrationParams * qemuMigrationParamsForSave(virTypedParameterPtr params, int nparams, bool sparse, - unsigned int flags); + bool bypassCache); int qemuMigrationParamsDump(qemuMigrationParams *migParams, --=20 2.52.0