From nobody Sat Oct 24 20:21:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1792188536; cv=none; d=zohomail.com; s=zohoarc; b=EnwaDlJ3zr6UtqJK2GMzrUQbYT31fiUmJ43mAQe2sKqX6d2S3ZYJl77d1LcpCsf4xArCKk7UYGvgOB2vMRUCgd6SlW/IGMzLiYmE0ltfmUizaNMnC3ucGLEagwERDD0gW1x6N3wX1D91NZg1puBEo6dQuhDYI69A4XBQnzfFJXs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1792188536; h=Content-Transfer-Encoding:Date:Date:From:From:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:Subject:Subject:To:To:Message-Id:Cc; bh=Umt4mA7XVZTW3kxkkQSoL0PKhOJlRkPeN+oWhDc6h70=; b=kuL4oPHbbGjOVnPoUw37QX6o6rt/RiDcVHYugmieaR2n1duQJpFcteapp5WG1QyFvtyKOFLUGGRIgcCHQLmddU312w+HgBGK7fBwIJjeOa/Kz9RAFAjH+y6VfLNFQqkKLmgXACivOPFWTsoj9YupOWcNszLZXba3PWW5j46EMGo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 179218853598070.97208463190975; Fri, 16 Oct 2026 15:08:55 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 60F9B41992; Fri, 16 Oct 2026 18:08:54 -0400 (EDT) Received: from [172.19.199.16] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 2C0A141B83; Fri, 16 Oct 2026 18:07:23 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9996B3F31F; Fri, 16 Oct 2026 18:07:11 -0400 (EDT) Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) (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 5EBFB41966 for ; Fri, 16 Oct 2026 18:07:10 -0400 (EDT) Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-48dfdd431dcso666219f8f.1 for ; Fri, 16 Oct 2026 15:07:10 -0700 (PDT) Received: from localhost ([2605:a601:9a24:9400::a]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-48dfdeb18f8sm6871618f8f.20.2026.10.16.15.07.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Oct 2026 15:07:07 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1792188429; x=1792793229; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Umt4mA7XVZTW3kxkkQSoL0PKhOJlRkPeN+oWhDc6h70=; b=KDk4ufky22LJOmCvPzTK2cpcM/is0vMiJygmb+ZGvLYs6QV7KZ7dlt/aOuKdm4afx8 ImHcSgPIludJkIt+Xqc7yo6QVYFUnEXNs8wm1lgWJe7MBbEuR5Mns8JddOg0JCOHRFZj pLyy1A1550c2he5zwE8ml4RZJ1c57QPd8DWKFVhOrpJwf3TkKFjEUBJeu6+LiAmiLay8 W1yDpRH8wYpDdmbYlw6gy8HtC+8gY5s4dOYWgNhtfv+kyeKCsJDPjYN5luvtYt/fAa0v UUK4jRBC2Rx5Gg6s7lRimE1vI5UW1X2s6fqWfHIDoa8JY3SBBhhLiQeVvJ5L0fP79uEU VhrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792188429; x=1792793229; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Umt4mA7XVZTW3kxkkQSoL0PKhOJlRkPeN+oWhDc6h70=; b=PyNtEl0bnNh8Xl7hSTxBdadVcgtbYJ8rviAWB0tUZ6SyljG1oW9HRGcVIAB63IHrmH to91QW/oK/e/TiREJMyUPEAFfw5Piy2HEbGiuJvWB2Soy5fLTrct42gDH0JDQ5A5QjCx juimp+HFOMNV0sGJ/hLMXkjqxwvLBPN0sGE5zkhYWyoE5PcNkqAO2+LFifOyQgBr10bX jFcDoYQtFguY/+4/HskLfp62AJpcJATo2PbNJZGboK5C8PcNAsECcbOM9U5mIxjEMlkg DjucB4jYf2pZmg3YQOKHTCpSE9FA67Nj5sQhz0BGmy/a7ZVFAp1oA47dwaLANUQJe0pi 24Nw== X-Gm-Message-State: AFq9FYKnF04VnEr+Iw9qkPcCSh9xhbhccpfdrIisW88b9sFwJH25bE+y 72XCbpVSPh+A4i5igU+rvFyzfDcho5ex3rPWJ4wWiemv8rbC3mEPpU77HdVzaXPGY3hk64PwP9r /9wxdjnM= X-Gm-Gg: AYBFou1kosILVcMfjmf/r7wS+n6hGnpHrqaXOaygRDvYMh9rsILhX/dYuAiwgLvA+8U aLh+41zPQe2M/BxaY8tJrT8v0E5IBPIFSOs+KTDcZIC0ti9446gctwd/73E9309vzdV1bN+xRIC F5/lhpyh40FZ5uYzuD3yrxXGmloN1dOUJ2cvzKZk/deINZA2qNcOwVN4lSRIMjZplW4SqNlbLMy aDgj0TanPlD+XCU2f2wRWPuHV8Uduk7PnBeqidpLIoLiLpw5esuGtQUWStFsSJJGlqAQ8ESGQxB wcJAscXYpO4UhPL7kzHNR6kc0oAoAQq9S9Vf9CcspQ3aUAfSmIhIyN5VSSuEifmmlMpnmN6F8Yb yEz9R1lKLQVEdrAw+h9o7HaMzpih+73pPZJ3ViNP2OAZdB/qT0f+mV5znP9r3LiYPaen9i9CFlx b/7C2e7NHaDRhqXfwqqki9gszBtF/ftvCQk11E7xVftDQ= X-Received: by 2002:a05:600c:621b:b0:4a1:88da:800f with SMTP id 5b1f17b1804b1-4a1c66b365cmr106862465e9.9.1792188428324; Fri, 16 Oct 2026 15:07:08 -0700 (PDT) To: devel@lists.libvirt.org Subject: [PATCH V2] qemu: emit UNDEFINED event when undefining source after migration Date: Fri, 16 Oct 2026 16:06:52 -0600 Message-ID: <20261016220705.158502-1-jfehlig@suse.com> X-Mailer: git-send-email 2.51.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: PKRALGECT2BUVBQYXV3QNVJMSGXO7R3F X-Message-ID-Hash: PKRALGECT2BUVBQYXV3QNVJMSGXO7R3F X-MailFrom: jfehlig@suse.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: Jim Fehlig via Devel Reply-To: Jim Fehlig X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1792188542152158500 Content-Type: text/plain; charset="utf-8" From: Jim Fehlig When migrating with VIR_MIGRATE_UNDEFINE_SOURCE, qemuMigrationSrcConfirm() and qemuMigrationSrcPerformJob() delete the domain's persistent config on the source host but never emit a VIR_DOMAIN_EVENT_UNDEFINED lifecycle event. Applications relying solely on domain events never learn the domain was undefined on the source. Add a new UNDEFINED event detail named 'VIR_DOMAIN_EVENT_UNDEFINED_MIGRATED= ", and include it when emitting an UNDEFINED event after a successful migration with VIR_MIGRATE_UNDEFINE_SOURCE flag. Signed-off-by: Jim Fehlig Reviewed-by: Michal Privoznik --- examples/c/misc/event-test.c | 3 +++ include/libvirt/libvirt-domain.h | 1 + src/qemu/qemu_migration.c | 10 ++++++++++ tools/virsh-domain-event.c | 3 ++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/examples/c/misc/event-test.c b/examples/c/misc/event-test.c index 601f5eafcf..3a601cce33 100644 --- a/examples/c/misc/event-test.c +++ b/examples/c/misc/event-test.c @@ -121,6 +121,9 @@ eventDetailToString(int event, case VIR_DOMAIN_EVENT_UNDEFINED_RENAMED: return "Renamed"; =20 + case VIR_DOMAIN_EVENT_UNDEFINED_MIGRATED: + return "Migrated"; + case VIR_DOMAIN_EVENT_UNDEFINED_LAST: break; } diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 99208137c3..890d11cf5e 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -5691,6 +5691,7 @@ typedef enum { typedef enum { VIR_DOMAIN_EVENT_UNDEFINED_REMOVED =3D 0, /* Deleted the config file (= Since: 0.5.0) */ VIR_DOMAIN_EVENT_UNDEFINED_RENAMED =3D 1, /* Domain was renamed (Since= : 1.2.19) */ + VIR_DOMAIN_EVENT_UNDEFINED_MIGRATED =3D 2, /* Domain was migrated with= VIR_MIGRATE_UNDEFINE_SOURCE flag (Since: 12.9.0) */ =20 # ifdef VIR_ENUM_SENTINELS VIR_DOMAIN_EVENT_UNDEFINED_LAST /* (Since: 0.9.10) */ diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 797f83ca0d..76661de09a 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4279,6 +4279,7 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, { qemuMigrationJobPhase phase; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); + virObjectEvent *event =3D NULL; int ret =3D -1; =20 VIR_DEBUG("vm=3D%p, flags=3D0x%x, cancelled=3D%d", vm, flags, cancelle= d); @@ -4325,11 +4326,15 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, if (!cancelled && ret =3D=3D 0 && flags & VIR_MIGRATE_UNDEFINE_SOU= RCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); vm->persistent =3D 0; + event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_UNDEFINED, + VIR_DOMAIN_EVENT_UNDEFINED_MI= GRATED); } qemuDomainRemoveInactive(vm, VIR_DOMAIN_UNDEFINE_TPM, true); } =20 cleanup: + virObjectEventStateQueue(driver->domainEventState, event); virDomainObjEndAPI(&vm); return ret; } @@ -6328,6 +6333,7 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, bool v3proto) { virObjectEvent *event =3D NULL; + virObjectEvent *undefine_event =3D NULL; int ret =3D -1; virErrorPtr orig_err =3D NULL; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); @@ -6419,6 +6425,9 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); vm->persistent =3D 0; + undefine_event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_UNDEFINED, + VIR_DOMAIN_EVENT_UNDEFINED_MI= GRATED); } qemuDomainRemoveInactive(vm, 0, true); } @@ -6427,6 +6436,7 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, =20 cleanup: virObjectEventStateQueue(driver->domainEventState, event); + virObjectEventStateQueue(driver->domainEventState, undefine_event); return ret; } =20 diff --git a/tools/virsh-domain-event.c b/tools/virsh-domain-event.c index a541b155f4..40a72563a5 100644 --- a/tools/virsh-domain-event.c +++ b/tools/virsh-domain-event.c @@ -62,7 +62,8 @@ VIR_ENUM_DECL(virshDomainEventUndefined); VIR_ENUM_IMPL(virshDomainEventUndefined, VIR_DOMAIN_EVENT_UNDEFINED_LAST, N_("Removed"), - N_("Renamed")); + N_("Renamed"), + N_("Migrated")); =20 VIR_ENUM_DECL(virshDomainEventStarted); VIR_ENUM_IMPL(virshDomainEventStarted, --=20 2.51.0