From nobody Wed Dec 17 08:56:09 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=1744284225; cv=none; d=zohomail.com; s=zohoarc; b=jkwtVOOTFcQrNIexbGs3oKqqGJP9jgCoNxdxtWWMN1jydVYsOJG0VH7UPGaC5K5Jn7pTbYS4jPmIiXuonQZYW7bIVu2gYAbhlkiWDpMdt4DXpTIf7JEYEQ56ySVMCpjy6sZa1UYFK2RJXyS4ljj+9gWbu7t3Ux+sadCqB4STu38= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744284225; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=HFAiPoZf3BjEN5oggGvFNxhy2H2EVm+iUyLH/zI4QTU=; b=lCoz3EcDz4uCUFAZl8BcgvxXfMx64BlOIXca5APtwg/vAdQ3HUH6VL6z3P0qKfzhttnaQeV2gtOFZeSqnBbOC89Phjs9LOFiaERZTneQI7MlUSBsEdfwH1HDewBH1WDh1qzV1eERIHZTfJRfrKIQQirmgR0OhCP4WuQUAoFowQg= 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 1744284225494301.65221660726843; Thu, 10 Apr 2025 04:23:45 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 84E0E15B0; Thu, 10 Apr 2025 07:23:44 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id E1CB417F5; Thu, 10 Apr 2025 07:22:38 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 502AF162C; Thu, 10 Apr 2025 07:22:33 -0400 (EDT) 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 BEDEB13A7 for ; Thu, 10 Apr 2025 07:22:32 -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-63-VhN1IoXLP7yk4fqs0my6LA-1; Thu, 10 Apr 2025 07:22:31 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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 531071800262 for ; Thu, 10 Apr 2025 11:22:30 +0000 (UTC) Received: from orkuz (unknown [10.43.3.115]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E1110180B493 for ; Thu, 10 Apr 2025 11:22:29 +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_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=1744284152; 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=8UvKcRS+kTCmwtUbzK7JkqaCwwgdB2pQpW0/fBpLhxg=; b=Jcc/EQHvnBP9Om4pGIYA/tDVvulYWbnCTT7JWcrQ/CI3G1DS8zMim7TYULwvgpoNE35/qD jC3vcmzY3iAxHmTs88SgbYrjQQG6PwlKJF3qgWSTBMhYOiqsYSgO9oYW02ucq6fY7Z2YQw osw4jb9RtndckeXzwnu8bk1rhHcnwuc= X-MC-Unique: VhN1IoXLP7yk4fqs0my6LA-1 X-Mimecast-MFC-AGG-ID: VhN1IoXLP7yk4fqs0my6LA_1744284150 To: devel@lists.libvirt.org Subject: [PATCH 2/2] qemu: Properly propagate migration state to TPM cleanup code Date: Thu, 10 Apr 2025 13:22:23 +0200 Message-ID: <67db7a7c71d987e783683973b4b61c32fe10ae51.1744284095.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 7kZ_y901QmpKK5QB-gruWvRICi0_U2Ugub2Ze8cyrTo_1744284150 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OIO4AAXNAG3JTUCPQ37YSAQ5CIEMWOXR X-Message-ID-Hash: OIO4AAXNAG3JTUCPQ37YSAQ5CIEMWOXR X-MailFrom: jdenemar@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: From: Jiri Denemark via Devel Reply-To: Jiri Denemark X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1744284226890019100 Content-Type: text/plain; charset="utf-8" From: Jiri Denemark When migrating a domain with TPM state on a shared disk, we need to skip TPM cleanup on both ends. So far the code only handled successful migration and skipped the cleanup on the source host. But if the migration failed for some reason, the cleanup would be incorrectly called on the destination host removing the TPM files even though the domain was still running on the source host. https://issues.redhat.com/browse/RHEL-82411 Signed-off-by: Jiri Denemark --- src/qemu/qemu_driver.c | 7 +++++-- src/qemu/qemu_migration.c | 6 +++--- src/qemu/qemu_process.c | 8 ++------ 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 6ce949dd07..ebdec2c6fa 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3845,6 +3845,7 @@ processMonitorEOFEvent(virQEMUDriver *driver, const char *auditReason =3D "shutdown"; unsigned int stopFlags =3D 0; virObjectEvent *event =3D NULL; + bool migration; =20 if (vm->def->id !=3D domid) { VIR_DEBUG("Domain %s was restarted, ignoring EOF", @@ -3855,6 +3856,8 @@ processMonitorEOFEvent(virQEMUDriver *driver, if (qemuProcessBeginStopJob(vm, VIR_JOB_DESTROY, true) < 0) return; =20 + migration =3D vm->job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_IN; + if (!virDomainObjIsActive(vm)) { VIR_DEBUG("Domain %p '%s' is not active, ignoring EOF", vm, vm->def->name); @@ -3869,7 +3872,7 @@ processMonitorEOFEvent(virQEMUDriver *driver, auditReason =3D "failed"; } =20 - if (vm->job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) { + if (migration) { stopFlags |=3D VIR_QEMU_PROCESS_STOP_MIGRATED; qemuMigrationDstErrorSave(driver, vm->def->name, qemuMonitorLastError(priv->mon)); @@ -3882,7 +3885,7 @@ processMonitorEOFEvent(virQEMUDriver *driver, virObjectEventStateQueue(driver->domainEventState, event); =20 endjob: - qemuDomainRemoveInactive(driver, vm, 0, false); + qemuDomainRemoveInactive(driver, vm, 0, migration); qemuProcessEndStopJob(vm); } =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index e6056e9abc..bb4d74a65d 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3609,7 +3609,7 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, * and there is no 'goto cleanup;' in the middle of those */ VIR_FREE(priv->origname); virDomainObjRemoveTransientDef(vm); - qemuDomainRemoveInactive(driver, vm, 0, false); + qemuDomainRemoveInactive(driver, vm, 0, true); } virDomainObjEndAPI(&vm); virErrorRestore(&origErr); @@ -6977,7 +6977,7 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, } =20 if (!qemuDomainObjIsActive(vm)) - qemuDomainRemoveInactive(driver, vm, VIR_DOMAIN_UNDEFINE_TPM, fals= e); + qemuDomainRemoveInactive(driver, vm, VIR_DOMAIN_UNDEFINE_TPM, true= ); =20 virErrorRestore(&orig_err); return NULL; @@ -7113,7 +7113,7 @@ qemuMigrationProcessUnattended(virQEMUDriver *driver, qemuMigrationJobFinish(vm); =20 if (!virDomainObjIsActive(vm)) - qemuDomainRemoveInactive(driver, vm, 0, false); + qemuDomainRemoveInactive(driver, vm, 0, true); } =20 =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 015a98d035..809029cefc 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8913,7 +8913,6 @@ void qemuProcessStop(virQEMUDriver *driver, size_t i; g_autofree char *timestamp =3D NULL; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); - bool outgoingMigration; =20 VIR_DEBUG("Shutting down vm=3D%p name=3D%s id=3D%d pid=3D%lld, " "reason=3D%s, asyncJob=3D%s, flags=3D0x%x", @@ -8989,10 +8988,7 @@ void qemuProcessStop(virQEMUDriver *driver, =20 qemuDomainCleanupRun(driver, vm); =20 - outgoingMigration =3D (flags & VIR_QEMU_PROCESS_STOP_MIGRATED) && - (asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT); - - qemuExtDevicesStop(driver, vm, outgoingMigration); + qemuExtDevicesStop(driver, vm, !!(flags & VIR_QEMU_PROCESS_STOP_MIGRAT= ED)); =20 qemuDBusStop(driver, vm); =20 @@ -9258,7 +9254,7 @@ qemuProcessAutoDestroy(virDomainObj *dom, VIR_DOMAIN_EVENT_STOPPED, VIR_DOMAIN_EVENT_STOPPED_DESTROYED); =20 - qemuDomainRemoveInactive(driver, dom, 0, false); + qemuDomainRemoveInactive(driver, dom, 0, !!(stopFlags & VIR_QEMU_PROCE= SS_STOP_MIGRATED)); =20 qemuProcessEndStopJob(dom); =20 --=20 2.49.0