From nobody Fri Dec 19 19:03:18 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=1747323034; cv=none; d=zohomail.com; s=zohoarc; b=PSWd+xx9A1Gtb3+wki+TrX8puN/kZrTVmggp3sXYibRC/JsQl3TYFCs/RWo2Bl3kJqkBXLe+w4GC6uU21vfbv+Rjn1Q66uVoeoEliLQyx0YoiU6/3YislrH6wXzhYWXstMgPRdvCvRHLnpwCT7Vyi8F0x+SszigQOQtUuwc9Xx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747323034; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=RLHrRB7q/owhQ/afx7lBUdILW9Bn5HuI23u7b27dg2s=; b=bU4n2YTa6D6Y0eU92ZyQZVTxhjgMN/ayT/3e6uQrNO5K4d3DjPfTHwce96kvKoLLEZrvzPvOdFYuTB3/kjeH5iyR0MQDV9NN8Q60y+ZvQdeAJ3rTx07+keM6YE5AhFeSyZoatZ8O62UJImfr7OYbtfDbIIlA/OgWVu1tN5Risfg= 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 1747323034515771.882070845359; Thu, 15 May 2025 08:30:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 8D80E1490; Thu, 15 May 2025 11:30:33 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 4625E13EC; Thu, 15 May 2025 11:29:27 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id DBE60D3B; Thu, 15 May 2025 11:29:19 -0400 (EDT) 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 67A2DB75 for ; Thu, 15 May 2025 11:29:19 -0400 (EDT) Received: from mx-prod-mc-06.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-56-gFHxcYnkPvC4BY6ZzjtC7w-1; Thu, 15 May 2025 11:29:17 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B833E1800261 for ; Thu, 15 May 2025 15:29:16 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.37]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B9238180045B; Thu, 15 May 2025 15:29:15 +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=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747322959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a1c1mdWHTq9clpDY23WG56z4HDKhtP+VzPXZb/gfDfs=; b=ehgDs2y8EjHP//dm7ElgINVDMNcWHJZmpyF/zW7coNIXNGKVYpoheExXgref6HLa1orb9Q dLkw2tVglDAkYKxczhIILDDTjZvHgYHTsmdNH5FwS4+GLxdYsEfgLN77hMFUV8yQ/w8voC +6I60EYfzTj8Yotp8LUuZYCqPsSBE0Y= X-MC-Unique: gFHxcYnkPvC4BY6ZzjtC7w-1 X-Mimecast-MFC-AGG-ID: gFHxcYnkPvC4BY6ZzjtC7w_1747322957 To: devel@lists.libvirt.org Subject: [PATCH 03/17] qemuSnapshotRevertActive: Remove transient domain on failure Date: Thu, 15 May 2025 17:28:48 +0200 Message-ID: <4eb20e806098d39e7f57b9a83c392b07535a4de3.1747322588.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 4szd17zDdzyXgpkl_TkSIisKlYjFdyAnuZK8SWraGog_1747322957 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: PMZGE6DB76DI3NOBFUMZUUEV5JSVMEX6 X-Message-ID-Hash: PMZGE6DB76DI3NOBFUMZUUEV5JSVMEX6 X-MailFrom: pkrempa@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 CC: Peter Krempa X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1747323035266116600 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Code paths which deal with stopping of the qemu process need extra handling for transient definitions as they need to be removed from the domain list when we'd be leaving them inactive. In case of snapshot code it's on failure to revert a snapshot as we stop the qemu process but the failure to revert may mean that the new process will not be started. I've observed this when I was fixing the recent bug in snapshot reversion which left the domain in unusable state after failure to revert: $ virsh list foo error: Requested operation is not valid: domain is not running $ virsh undefine foo error: Requested operation is not valid: cannot undefine transient domain Signed-off-by: Peter Krempa --- src/qemu/qemu_snapshot.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index f9b18f94b6..6926d1a0e4 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -2628,13 +2628,12 @@ qemuSnapshotRevertActive(virDomainObj *vm, if (virDomainSnapshotIsExternal(snap)) { if (!(tmpsnapdef =3D virDomainSnapshotDefNew())) - return -1; + goto error; if (qemuSnapshotRevertExternalPrepare(vm, tmpsnapdef, snap, *config, *inactiveConfig, - &memdata) < 0) { - return -1; - } + &memdata) < 0) + goto error; } else { loadSnap =3D snap; } @@ -2656,7 +2655,7 @@ qemuSnapshotRevertActive(virDomainObj *vm, VIR_ASYNC_JOB_SNAPSHOT, VIR_QEMU_PROCESS_STOP_MIGRATED); } - return -1; + goto error; } detail =3D VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT; @@ -2667,7 +2666,7 @@ qemuSnapshotRevertActive(virDomainObj *vm, if (virDomainSnapshotIsExternal(snap)) { if (qemuSnapshotRevertExternalActive(vm, tmpsnapdef) < 0) - return -1; + goto error; qemuSnapshotRevertExternalFinish(vm, tmpsnapdef, snap); } @@ -2689,16 +2688,22 @@ qemuSnapshotRevertActive(virDomainObj *vm, if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("guest unexpectedly quit")); - return -1; + goto error; } rc =3D qemuProcessStartCPUs(driver, vm, VIR_DOMAIN_RUNNING_FROM_SNAPSHOT, VIR_ASYNC_JOB_SNAPSHOT); if (rc < 0) - return -1; + goto error; } return qemuSnapshotRevertWriteMetadata(vm, snap, driver, cfg, defined); + + error: + if (!virDomainObjIsActive(vm)) + qemuDomainRemoveInactive(driver, vm, 0, false); + + return -1; } --=20 2.49.0