From nobody Thu May 9 16:14:57 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1706614618149652.8167103270589; Tue, 30 Jan 2024 03:36:58 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 10F551CC9; Tue, 30 Jan 2024 06:36:57 -0500 (EST) Received: from lists.libvirt.org.85.43.8.in-addr.arpa (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 774891C1F; Tue, 30 Jan 2024 06:34:33 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 430E61B4D; Tue, 30 Jan 2024 06:34:21 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id C74961B4F for ; Tue, 30 Jan 2024 06:33:54 -0500 (EST) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-625-wuTNs29ONUKuZCP1_3YrOA-1; Tue, 30 Jan 2024 06:33:52 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id A46E238212C8 for ; Tue, 30 Jan 2024 11:33:52 +0000 (UTC) Received: from antique-work.redhat.com (unknown [10.45.224.183]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4F1CF2166B31 for ; Tue, 30 Jan 2024 11:33:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: wuTNs29ONUKuZCP1_3YrOA-1 From: Pavel Hrdina To: devel@lists.libvirt.org Subject: [libvirt PATCH 1/2] qemu_snapshot: create: refactor external snapshot detection Date: Tue, 30 Jan 2024 12:33:50 +0100 Message-ID: <278a50d78b281185f25117216dc0fd7c4e3196fa.1706614356.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: 26HKX6FYIE2WF2XLPDKFXW6RIBXPM6HH X-Message-ID-Hash: 26HKX6FYIE2WF2XLPDKFXW6RIBXPM6HH X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1706614620060100001 Introduce new function qemuSnapshotCreateUseExternal() that will return true if we will use external snapshots as default location. Signed-off-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_snapshot.c | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 73ff533827..ab7b47319b 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1576,6 +1576,20 @@ qemuSnapshotCreateXMLValidateDef(virDomainObj *vm, } =20 =20 +static bool +qemuSnapshotCreateUseExternal(virDomainSnapshotDef *def, + unsigned int flags) +{ + if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) + return true; + + if (def->memory =3D=3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) + return true; + + return false; +} + + static int qemuSnapshotCreateAlignDisks(virDomainObj *vm, virDomainSnapshotDef *def, @@ -1584,7 +1598,7 @@ qemuSnapshotCreateAlignDisks(virDomainObj *vm, { g_autofree char *xml =3D NULL; qemuDomainObjPrivate *priv =3D vm->privateData; - virDomainSnapshotLocation align_location =3D VIR_DOMAIN_SNAPSHOT_LOCAT= ION_INTERNAL; + virDomainSnapshotLocation align_location =3D VIR_DOMAIN_SNAPSHOT_LOCAT= ION_DEFAULT; =20 /* Easiest way to clone inactive portion of vm->def is via * conversion in and back out of xml. */ @@ -1604,17 +1618,19 @@ qemuSnapshotCreateAlignDisks(virDomainObj *vm, return -1; } =20 - if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) { + if (qemuSnapshotCreateUseExternal(def, flags)) { align_location =3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; - if (virDomainObjIsActive(vm)) - def->state =3D VIR_DOMAIN_SNAPSHOT_DISK_SNAPSHOT; - else - def->state =3D VIR_DOMAIN_SNAPSHOT_SHUTOFF; - def->memory =3D VIR_DOMAIN_SNAPSHOT_LOCATION_NO; - } else if (def->memory =3D=3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) { def->state =3D virDomainObjGetState(vm, NULL); - align_location =3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; + + if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) { + if (virDomainObjIsActive(vm)) + def->state =3D VIR_DOMAIN_SNAPSHOT_DISK_SNAPSHOT; + else + def->state =3D VIR_DOMAIN_SNAPSHOT_SHUTOFF; + def->memory =3D VIR_DOMAIN_SNAPSHOT_LOCATION_NO; + } } else { + align_location =3D VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL; def->state =3D virDomainObjGetState(vm, NULL); =20 if (virDomainObjIsActive(vm) && --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Thu May 9 16:14:57 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 17066146942520.73052811873049; Tue, 30 Jan 2024 03:38:14 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 3590A1B47; Tue, 30 Jan 2024 06:38:13 -0500 (EST) Received: from lists.libvirt.org.85.43.8.in-addr.arpa (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 6632E1CAC; Tue, 30 Jan 2024 06:34:41 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 9C3341A63; Tue, 30 Jan 2024 06:34:23 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 661961BDC for ; Tue, 30 Jan 2024 06:33:55 -0500 (EST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-648-JJ5v1nRNPSSVAAbLvcYnlw-1; Tue, 30 Jan 2024 06:33:53 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3A504827D8C for ; Tue, 30 Jan 2024 11:33:53 +0000 (UTC) Received: from antique-work.redhat.com (unknown [10.45.224.183]) by smtp.corp.redhat.com (Postfix) with ESMTP id D895D2166B31 for ; Tue, 30 Jan 2024 11:33:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: JJ5v1nRNPSSVAAbLvcYnlw-1 From: Pavel Hrdina To: devel@lists.libvirt.org Subject: [libvirt PATCH 2/2] qemu_snapshot: create: don't require disk-only flag for offline external snapshot Date: Tue, 30 Jan 2024 12:33:51 +0100 Message-ID: <36d4016e1029218cec9947530647d0023a426cd1.1706614356.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: VZPYB63FOFUYFM6TIOGNOYYNR6SKZLPB X-Message-ID-Hash: VZPYB63FOFUYFM6TIOGNOYYNR6SKZLPB X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1706614696312100001 Historically creating offline external snapshot required disk-only flag as well. Now when user requests new snapshot for offline VM and at least one disk is specified to use external snapshot we will no longer require disk-only flag as all other not specified disk will use external snapshots as well. Resolves: https://issues.redhat.com/browse/RHEL-22797 Signed-off-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_snapshot.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index ab7b47319b..d089f70d4e 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1577,15 +1577,25 @@ qemuSnapshotCreateXMLValidateDef(virDomainObj *vm, =20 =20 static bool -qemuSnapshotCreateUseExternal(virDomainSnapshotDef *def, +qemuSnapshotCreateUseExternal(virDomainObj *vm, + virDomainSnapshotDef *def, unsigned int flags) { + ssize_t i; + if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY) return true; =20 if (def->memory =3D=3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) return true; =20 + if (!virDomainObjIsActive(vm)) { + for (i =3D 0; i < def->ndisks; i++) { + if (def->disks[i].snapshot =3D=3D VIR_DOMAIN_SNAPSHOT_LOCATION= _EXTERNAL) + return true; + } + } + return false; } =20 @@ -1618,7 +1628,7 @@ qemuSnapshotCreateAlignDisks(virDomainObj *vm, return -1; } =20 - if (qemuSnapshotCreateUseExternal(def, flags)) { + if (qemuSnapshotCreateUseExternal(vm, def, flags)) { align_location =3D VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; def->state =3D virDomainObjGetState(vm, NULL); =20 --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org