From nobody Tue Jul 14 21:21:58 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=pass; 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1783841700; cv=none; d=zohomail.com; s=zohoarc; b=H7dYu+NSIbvrcXIY8JjQYK7zFfkoY+plgx0Cyy7pmNxIW0nACDGNLVQUH8Dzv7Wf9IXDeppFlnlrvHgju5azDYCQfmoE1s0nQQZz5/mC4aeXCbt7MoUTtA0g58V6wkStkH2vnO18eYLpUjGBYW3ZYA5ZeiFbVhxAH25U+YqE1oQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783841700; h=Content-Transfer-Encoding:Cc:Cc: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:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=+fz3arQHXD4IFqelZJcJ/RaOXULK1lB5t+53Iz+3PpE=; b=MJalkWCCcFpmkqd9tf/x5tIKHISywdT05dLF3Zd9GDsXVip4Rbq4Ycu4+KivYzi+Yf8Ycot4+fUuZsdgA57r2BpzR+WXoa0qipemm2WQZizimBiuKRpFPaIcgFckz4QmsOs0mM8FOpWJ3xtUFyK4TBt8LB4zaobifRxT6xDyhtQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1783841700571167.65495552222205; Sun, 12 Jul 2026 00:35:00 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4483A41D94; Sun, 12 Jul 2026 03:34:59 -0400 (EDT) Received: from [172.19.199.10] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 95BF141D27; Sun, 12 Jul 2026 03:33:14 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7197E3F959; Sun, 12 Jul 2026 03:32:51 -0400 (EDT) Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (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 68CBB3F2F3 for ; Sun, 12 Jul 2026 03:32:45 -0400 (EDT) Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-69c7697d523so989092a12.2 for ; Sun, 12 Jul 2026 00:32:45 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69a19cd8904sm13245978a12.2.2026.07.12.00.32.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Jul 2026 00:32:43 -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_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,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=gmail.com; s=20251104; t=1783841564; x=1784446364; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+fz3arQHXD4IFqelZJcJ/RaOXULK1lB5t+53Iz+3PpE=; b=rQKvSgadvx8QZtbTxKwJQqVMIEOFldw1q9d1OQSUrI7uBJ7OwwU650fqL7E9vOOJeg JwmcacVr0klIeuPP6NglC4R2nAQiBeDP24bSK+mkJJuiYeeIsz41busXrD2rz+mgUyBc 7x7afArSvH1fEgOavPJ9REuscFtb2JnXCktNWfnC9iIpP2spUYthaAfyPl0vCcRr++bS cm25b868GMLB9taoq+kMDjCLmuRUI9wM78jU05LBWRX6TKQWAIKay/6wzTcNgckHCaiz 30GQiV6SPIFqVMC1KnDkZBURo+P0K2A8dbEpqC2h9I2m+JTb6+I/dQrHxkhTvLyiQgKT 1Vaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783841564; x=1784446364; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=+fz3arQHXD4IFqelZJcJ/RaOXULK1lB5t+53Iz+3PpE=; b=l5tKtK0KrXxleUki+2VKoy0fjJZYfEd/d8J7DYywGM7FZaWf55hqNx6FNfNRosFb+F /9cSrnPzw+2M4BCkMT1pKpxmzQSe/4V/C01bj6F8R0/sMF0ynu+AEy/V/BoGIlm7X/nU 22HwI/21zDXrhzJ+oIMFRgckdd2ORhdtddSxDjwOD8hun2YbgiZVA0Xx9bEdsVjNUR8z 4XTvinRSJ3AcPHIheKn4R+6dqCPpE01oNpmNgsak+nmpa8+DCUmtFy3sj0LzcOuiC3T0 dOx5x4+HFf1a2e4yI3UQYbnySMOdjebRJxlHA/3Glmp1AZTqQxKt/GfpEQ/rXGyxJRZH fXHg== X-Gm-Message-State: AOJu0YxYSf4s1CQzQUBfjbb3mCdXv08+JNmlRszknvtGgqTmD+P9Z/Lh gEMWGFZv0iMe/bouFPhI4kExvSCvAr1Hw79Uy/keW+z4MUb11QYi+WgI2ab+Q4PV X-Gm-Gg: AfdE7cndk+3BYjvmLUzxsIa1HXck9GAymq6BbDP8hqfjEP385046hD70mj9UQ3oAs0h e3pEgZEkc2jfq8z2EQeJZcDtNd5wK8BMUJ4+imh5Xl+ykWdUiojAJCjOxGFcs01KYiSJ4AhZhnG 5rHqzu3JUqevp1FIMk7PcXm2dqAQ1hhV55b0WdADDvZhxxG/Xd4tjTMd1NeDE3S+8zwOt6Tqkmk 4rqb6fyNOY2lF5twNl9EnFpJ3tsgX/p5qtXfZxiXtQ6EI7b0xUjpv/1hEf+8lA9TJeS4J6GKmI1 c3/olOuGS+Vhg8wd+n3asNVyPlF6zRYFoqFPQLLeMRBEdwpAwV3jPZMgff6dmWVnNKxAFEwMxG3 M+Vp4Vcz+VKWSQrr6I11uRPrDx47BNQHgpS2GphQmvsBaS/PyuTQATzBzcY2fGVeJiHFOooWUoE jAmkeMqngCnYe1Iip/mVenZW90oPdkUvwZ/F3FA0rT9FwoTQ57hxIRLuS9DqLos64zh87CIaE6W jKe+Rt38Q2c1FdUaTC/yr4hjg8= X-Received: by 2002:a17:907:3c85:b0:c12:40c2:9d09 with SMTP id a640c23a62f3a-c161e909efdmr233457066b.12.1783841564120; Sun, 12 Jul 2026 00:32:44 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/3] bhyve: error handling for monitor opening Date: Sun, 12 Jul 2026 09:32:29 +0200 Message-ID: <20260712073231.6404-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260712073231.6404-1-bogorodskiy@gmail.com> References: <20260712073231.6404-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: XHJ7YU764U2BID4C4LDYYZHXKTQS44CV X-Message-ID-Hash: XHJ7YU764U2BID4C4LDYYZHXKTQS44CV X-MailFrom: bogorodskiy@gmail.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 CC: Roman Bogorodskiy 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: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1783841701855158500 Content-Type: text/plain; charset="utf-8" The virBhyveProcessStartImpl() function which implements domain start does not check if bhyve monitor open is successful. Check that and jump to the cleanup routines if it was not. Signed-off-by: Roman Bogorodskiy Reviewed-by: Peter Krempa --- src/bhyve/bhyve_process.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index 2221d8700a..4d93ba8fac 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -411,7 +411,8 @@ virBhyveProcessStartImpl(struct _bhyveConn *driver, =20 vm->def->id =3D vm->pid; virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, reason); - priv->mon =3D bhyveMonitorOpen(vm, driver); + if ((priv->mon =3D bhyveMonitorOpen(vm, driver)) =3D=3D NULL) + goto cleanup; =20 if (virBhyveDomainObjStartWorker(vm) < 0) goto cleanup; --=20 2.52.0 From nobody Tue Jul 14 21:21:58 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=pass; 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1783841799; cv=none; d=zohomail.com; s=zohoarc; b=RW/qq6DcMXcDOUEUUQ446Bk13obgri329Bx2IA4nGl/3jWMeaBbeLLFnwVhIQsCQcqGaxzpS4P+U9fltazfpMzVWB0AgaAXCJB8u1UQwjfx1+NPyhrLLNn97ih+UWsMw9S2rjDnx5Xe76mcUXk18awZpy3x0QAam5skMcIo++FQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783841799; h=Content-Transfer-Encoding:Cc:Cc: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:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=3d7+AQBOckCogNqitVCME0hJXM1uPGC9NuUOwuG1R80=; b=kUlnUxFtnJhAtSu8bRSYVg7z8mlA4kyIakiSs8GDcjYequPV13x2g7uZd4AKsfKEdjjlYe8y7YfnGH0Vffak4V6espdWYxopujSmVDteYtbbBsL9VMw94fkaitFTI0/UTdQrSnd6p9vogmCu7KFwsxxqRS7p6KxZArf1uegAqrM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1783841799784285.11285985632196; Sun, 12 Jul 2026 00:36:39 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 17D0C41CA5; Sun, 12 Jul 2026 03:36:38 -0400 (EDT) Received: from [172.19.199.10] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id AF88F41C97; Sun, 12 Jul 2026 03:33:22 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C5B673F943; Sun, 12 Jul 2026 03:32:51 -0400 (EDT) Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) (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 69FA73F969 for ; Sun, 12 Jul 2026 03:32:46 -0400 (EDT) Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-699fbcd23ccso3100178a12.1 for ; Sun, 12 Jul 2026 00:32:46 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69a19cd8904sm13245978a12.2.2026.07.12.00.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Jul 2026 00:32:44 -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_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,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=gmail.com; s=20251104; t=1783841565; x=1784446365; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3d7+AQBOckCogNqitVCME0hJXM1uPGC9NuUOwuG1R80=; b=dOeEPdGwHHj5kWgypwBm0rY8SxCkUBOj1kL3TYuox6W/atUJASkCKqf0mGbCXEaLOW VYGEfbsfUQwUgOWFQv8m1ctNlwyaVPU0BW828tspE/dlGcYqzrZNX8r0xlwe1FRZl8Ao m1Cl73XPOhdjJuEOVIW3UvEvxVamYh/6i2m3nr4ba8u1UI7/tknmojF3k/M2Vi5Fachc qmg5FfQCkSvoA9vv2ikF2XD1dSHiAqco9alFuFJPeunmUOZHSdmBtT8gnLAv0ekmGIsh sLhUb3AxxudR/qCy6c08bHp6YjHP0bDn8tUJqjEgyBhfQmJrdhk9M61I79ZP8y263NjL Q7fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783841565; x=1784446365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3d7+AQBOckCogNqitVCME0hJXM1uPGC9NuUOwuG1R80=; b=W3xT/hR5Xl0S4s7/iQC4+TbL0ulfabw8Pmh5M5I2mBz0BsBpNHXthiXPovFV8o7OAw GxvVLfyH4o9E02FuE+V5KPuSkh+x66oq6Rd4p0C4c9A+HEhc/Z99nBHqcJBg7zAgjTt9 iRQoQMd+JJpsb54F/R0YzAg97aZNqaKuyUhuihXtiP7Hb5TUGbDiQsSGVRUCwrlaPfhS jntcYl6THEjU2FATSK1aKcfdV8+UP9aq0VZFswGYUWM/6zk6OlDgw2EMFs1yvGdA0e6V jtN6K7CUedGjQSkntCsTCDGaU81xFd+IV/ep36wGhtwOWUw1TsKhvsEGv+rw1yjo3fae 63LA== X-Gm-Message-State: AOJu0Ywb4eJ3Y9Gqtf1Rz61G1YzBw6/v/RyscF8kgLifkW20YZnp4S6t UKfcXfOOn8sF/jX2kbUn017VfI8Gb14y66XTN3wc0CGyrit3jP00G8872F4T4NU4 X-Gm-Gg: AfdE7clBhy0VZe67TZAvIxH0hGNOAPnEbzzESaEUnCE4NbJ/aLxZ6e0ar0p1bUb210Y HX0EH4ywqMu4Bck0jZobCJcFkNjrGUXdi+AvLVZuy2ny+ihD4Bj0G6E9tzJ8xGb1BikBxqxEG0P iy0t9GvguFxDA16OnE4ZdzwVXN/ZbAUxrvaXtdETUp/899JfKoPvurAlaT2lukcuF2Ifpk86hOP qUebeWAIU1Bn/5IK2aEQFg0WEhWH3cqqSY+dkuzS+fLEu5tYOU1oE/AzXBfTSabbEWyJKczlBrI jtua8nM6R1PXIuMTN27cVciK9Bt/IRqa4eOZ5lP+Eznm5y4R+DxpgdbuDbmAIslz09IZKRNPOUg gPrNCU4zzGgKv15VaNKedEaKQltqAJuMD2DKQvBz/8eylKU2zUEqQDbiybEv6CjzFVFtlQzIKvb m0H7M5k3ois80urBHXW3PKfn7+182ghM3cRmSU2zgcMCiGKQouLIWgq5WS+ZteaNtvDLFPetZ2Y pnKlJ4eN7WeJ2jNa82uNyREILk= X-Received: by 2002:a05:6402:40cb:b0:698:e614:e4bf with SMTP id 4fb4d7f45d1cf-69c5edb6a92mr2017142a12.0.1783841564848; Sun, 12 Jul 2026 00:32:44 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 2/3] bhyve: improve domain startup error handling Date: Sun, 12 Jul 2026 09:32:30 +0200 Message-ID: <20260712073231.6404-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260712073231.6404-1-bogorodskiy@gmail.com> References: <20260712073231.6404-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: V7ZX23XTIW2CSY3LGPA4QAR6IBWSLSSE X-Message-ID-Hash: V7ZX23XTIW2CSY3LGPA4QAR6IBWSLSSE X-MailFrom: bogorodskiy@gmail.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 CC: Roman Bogorodskiy 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: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1783841800443158500 Content-Type: text/plain; charset="utf-8" Current cleanup routine for the domain start errors misses quite a few important steps. It does not set the proper domain state, it does not clean up sockets and so forth. The only thing it does is destroying of the actual domain and performing network cleanup. To properly clean all resources, replace running virBhyveProcessBuildDestroyCmd() command with executing virBhyveProcessStop() which already does the necessary steps. Extend virBhyveProcessStop() with the forceCleanup boolean argument which instructs it not to error out on some checks to account for inconsistent state after the partial startup. Signed-off-by: Roman Bogorodskiy Reviewed-by: Peter Krempa --- src/bhyve/bhyve_driver.c | 2 +- src/bhyve/bhyve_monitor.c | 6 ++-- src/bhyve/bhyve_process.c | 68 ++++++++++++++++++++++++--------------- src/bhyve/bhyve_process.h | 3 +- 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 668e46ad37..a0d97d3f86 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1019,7 +1019,7 @@ bhyveDomainDestroyFlags(virDomainPtr dom, unsigned in= t flags) if (virDomainObjCheckActive(vm) < 0) goto cleanup; =20 - ret =3D virBhyveProcessStop(privconn, vm, VIR_DOMAIN_SHUTOFF_DESTROYED= ); + ret =3D virBhyveProcessStop(privconn, vm, VIR_DOMAIN_SHUTOFF_DESTROYED= , false); event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED, VIR_DOMAIN_EVENT_STOPPED_DES= TROYED); diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index 8cf4b41ca3..a24696cad5 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -153,7 +153,7 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNU= SED, void *opaque) virReportError(VIR_ERR_INTERNAL_ERROR, _("Guest %1$s got signal %2$d and crashed"), name, WTERMSIG(status)); - virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED, fa= lse); } else if (WIFEXITED(status)) { if (WEXITSTATUS(status) =3D=3D 0 || mon->reboot) { /* 0 - reboot */ @@ -162,11 +162,11 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_U= NUSED, void *opaque) } else if (WEXITSTATUS(status) < 3) { /* 1 - shutdown, 2 - halt, 3 - triple fault. others - erro= r */ VIR_INFO("Guest %s shut itself down; destroying domain.", = name); - virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N, false); } else { VIR_INFO("Guest %s had an error and exited with status %d;= destroying domain.", name, WEXITSTATUS(status)); - virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_UNKNOWN= ); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_UNKNOWN= , false); } } } diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index 4d93ba8fac..d501aa8bcc 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -66,7 +66,7 @@ bhyveProcessAutoDestroy(virDomainObj *vm, bhyveDomainObjPrivate *priv =3D vm->privateData; struct _bhyveConn *driver =3D priv->driver; =20 - virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_DESTROYED); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_DESTROYED, false); =20 if (!vm->persistent) virDomainObjListRemove(driver->domains, vm); @@ -437,18 +437,9 @@ virBhyveProcessStartImpl(struct _bhyveConn *driver, devmap_file); } =20 - if (ret < 0) { - int exitstatus; /* Needed to avoid logging non-zero status */ - g_autoptr(virCommand) destroy_cmd =3D NULL; - if ((destroy_cmd =3D virBhyveProcessBuildDestroyCmd(driver, - vm->def)) !=3D N= ULL) { - virCommandSetOutputFD(load_cmd, &logfd); - virCommandSetErrorFD(load_cmd, &logfd); - ignore_value(virCommandRun(destroy_cmd, &exitstatus)); - } - - bhyveNetCleanup(vm); - } + if (ret < 0) + ignore_value(virBhyveProcessStop(driver, vm, + VIR_DOMAIN_SHUTOFF_FAILED, true)); =20 return ret; } @@ -634,26 +625,49 @@ bhyveProcessRemoveDomainStatus(const char *statusDir, } } =20 +/** + * @driver: bhyve driver + * @vm: domain object + * @reason: shutoff reason + * @forceCleanup: boolean controlling cleanup + * + * Stops the domain and cleans up its resources. + * It could be used whether as a direct call or as a cleanup routine. + * In the latter case, @forceCleanup should be set to `true`, so it + * tries to clean up all resources instead of exiting early if the domain + * is not active for example. + * + * Does not run the shutdown hooks if the domain PID was not obtained. + * + * Returns 0 on success, -1 on error. + */ int virBhyveProcessStop(struct _bhyveConn *driver, virDomainObj *vm, - virDomainShutoffReason reason) + virDomainShutoffReason reason, + bool forceCleanup) { int ret =3D 0; size_t i =3D 0; g_autoptr(virCommand) cmd =3D NULL; bhyveDomainObjPrivate *priv =3D vm->privateData; + bool vm_started =3D false; =20 - if (!virDomainObjIsActive(vm)) { - VIR_DEBUG("VM '%s' not active", vm->def->name); - return 0; - } + if (vm->pid !=3D 0) + vm_started =3D true; =20 - if (vm->pid =3D=3D 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Invalid PID %1$d for VM"), - (int)vm->pid); - return -1; + if (!forceCleanup) { + if (!virDomainObjIsActive(vm)) { + VIR_DEBUG("VM '%s' not active", vm->def->name); + return 0; + } + + if (!vm_started) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Invalid PID %1$d for VM"), + (int)vm->pid); + return -1; + } } =20 /* Destroy monitor before running the actual destroy command to prevent @@ -669,7 +683,8 @@ virBhyveProcessStop(struct _bhyveConn *driver, VIR_WARN("Failed to run the domain destroy command"); } =20 - bhyveProcessStopHook(driver, vm, VIR_HOOK_BHYVE_OP_STOPPED); + if (vm_started) + bhyveProcessStopHook(driver, vm, VIR_HOOK_BHYVE_OP_STOPPED); =20 /* Cleanup network interfaces */ bhyveNetCleanup(vm); @@ -702,7 +717,8 @@ virBhyveProcessStop(struct _bhyveConn *driver, vm->pid =3D 0; vm->def->id =3D -1; =20 - bhyveProcessStopHook(driver, vm, VIR_HOOK_BHYVE_OP_RELEASE); + if (vm_started) + bhyveProcessStopHook(driver, vm, VIR_HOOK_BHYVE_OP_RELEASE); virPidFileDelete(BHYVE_STATE_DIR, vm->def->name); bhyveProcessRemoveDomainStatus(BHYVE_STATE_DIR, vm->def->name); =20 @@ -736,7 +752,7 @@ int virBhyveProcessRestart(struct _bhyveConn *driver, virDomainObj *vm) { - if (virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN) < 0) + if (virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, false= ) < 0) return -1; =20 if (virBhyveProcessStartImpl(driver, vm, VIR_DOMAIN_RUNNING_BOOTED) < = 0) diff --git a/src/bhyve/bhyve_process.h b/src/bhyve/bhyve_process.h index bf82f748a6..339e5d429a 100644 --- a/src/bhyve/bhyve_process.h +++ b/src/bhyve/bhyve_process.h @@ -44,7 +44,8 @@ int virBhyveProcessStart(bhyveConn *driver, =20 int virBhyveProcessStop(struct _bhyveConn *driver, virDomainObj *vm, - virDomainShutoffReason reason); + virDomainShutoffReason reason, + bool forceCleanup); =20 int virBhyveProcessRestart(struct _bhyveConn *driver, virDomainObj *vm); --=20 2.52.0 From nobody Tue Jul 14 21:21:58 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=pass; 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1783841851; cv=none; d=zohomail.com; s=zohoarc; b=lN1YjAcCbG2pY5WZyJ1Nv/kh555R5h2kS09+uPsxPZNpgMv08kOjK4h4dnABLJ5mPwNDnmII500jTVx3fEL15S7SjoyDr/Abz/M3X+2zohKNGVaWTF40EaNxooeM5BP9zcVJGqvDRLl+pqonhzUmaPxp3OUeWadbm0QFcFhGjFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783841851; h=Content-Transfer-Encoding:Cc:Cc: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:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=Dr27PQ14/YiWMsor6ogC+J0NZ9kOorNBUpdAoatz6h0=; b=fpGHBO31Mjrahwy8YGSuBzDa7WBVnV6mByRnCQTmSRClmIgq9L7788PG4Sbf2I8MoDziIV8OjRu/57WW4QxPljpROYI7AK4g0/dOHrbEB7FiiFxBpdjJesKIkPI1nTbO+4di5FMnCqOi9xoTx/Vb3Rjfs3t+BfsVqszHsXclfcc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1783841851000863.336914330537; Sun, 12 Jul 2026 00:37:31 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D54CD3F9A4; Sun, 12 Jul 2026 03:37:28 -0400 (EDT) Received: from [172.19.199.10] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 5AD3141E6D; Sun, 12 Jul 2026 03:33:35 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 2DEBB3F2F3; Sun, 12 Jul 2026 03:32:52 -0400 (EDT) Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) (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 E629B3FD2B for ; Sun, 12 Jul 2026 03:32:46 -0400 (EDT) Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-698aa7ba320so5352355a12.1 for ; Sun, 12 Jul 2026 00:32:46 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-69a19cd8904sm13245978a12.2.2026.07.12.00.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Jul 2026 00:32:45 -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_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,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=gmail.com; s=20251104; t=1783841566; x=1784446366; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Dr27PQ14/YiWMsor6ogC+J0NZ9kOorNBUpdAoatz6h0=; b=cp0G8VvHuV1YfjM/kN5nC9NU9VHlqflwUr0MhnTjFtbooWZxSJxTKha1M8hLURjQ28 u0bCVEA/bY6SgSox2stxAtoaSYxTtqRWVjJOkRnBYs1KhrZSVRyX+5wcuOzUB7p7Ykc1 JN36VRBmqKghEE23X/cY95zQo/tKlrGxrzsSe2reCYOD2Vk2nssz9QOp2b9EgVEBZUeb pcM92RzVw5TexOchDqEQakBCBwbj6ilEiavMr+aiaM0RJhu1n/DXAOgL6l/4yEPgJgmw OSqhSfLF7tb8EG8nNz94cQbUatMTVU9Oa3cmS+HSk7buWuHgcbt+SPwRUcLF9KfQZk50 5P3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783841566; x=1784446366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Dr27PQ14/YiWMsor6ogC+J0NZ9kOorNBUpdAoatz6h0=; b=ZgUUI6mUV8u0r7b/hckigbfDI2+M4kNMkTdl5QrrgFDnziwRDAI6R/ma+aZ7DI9CsS l6hPly4ELRGusUv2J6zxYXt+rltcy2gq6cjnnFh8T4W17e+TuP2UNZM6F/GA+wmmp4pj mQaL/CQvH6DqbJKhy98cZtpWlz4vhpc4tafTgvCuIRiiXv2BpZVuiEMov+IMEp0UfZX5 ZXc1asC//sRfRpgtWUULmwUtKCj/gWgk6onU6MlpH8WQ6S858FvWDzjQMDDmlKfhoXpO XR6mBhFCCmAOpUyigYARAZKCq6MH1nyyT5DFOaFjqFpOhip7aDAkcQGUaBTr3IHMp+py +5fw== X-Gm-Message-State: AOJu0YwecriBMTZWyUkl+1IsOf/TDMqr6QHJFw/tdLDYPKTpwA4Pn+fk Y11axO2q44hUYBV40EUuatArTd6vTSkGIxDCraA8tPNdl92o7E2QliMjzM2febMa X-Gm-Gg: AfdE7cnO2z/esO7axpykvpL+yCVqxK5INgeg59GQi4aS+LZ/V10NtqUqYcWaulRasxX YCG95E4/C4Qnuy2QyPefkmA4UXouDXhwN8Apij49rPDQygpZnG4OtN9R2d0ybwnSBrCeMfsw2Bt LqfTuyALWZHAsvyqsPWq+hRqhHMGrgmwBo/TCTVCiMyxoPBwett2uEuL4zX0oLjQkDSS3hIF8Wc SeEAfViugVuQr8/gAn/T2Wg9NYrvp2UXAZAoo0tsLvR+63Cw2tn9khPqxDL6V+wL3FcEmFdncce 5pNU4W3B/pHjzlNEMwAzDYxgiAJ3qoOl3vr3xa0H7d1V68tCizQy6WMgJH9LamACyYd+mr7OGjq 51/10Wws4OerxwqnhnJIjZ8ag0BbxjWK9GLxjlnPs8AoArof6bkibLjB3+mJQNeuc1qhG31vvpz ticGSJypy4BDLNYoPFPyx4b9ep5zzKoEPjWQp4glpDLBhbDnWoIgqLzJDtC5/qcQsdWgTGvQb5D zayS+mwaM8Ci0V8g7oofEa7W2w= X-Received: by 2002:a05:6402:4149:b0:698:7418:57a9 with SMTP id 4fb4d7f45d1cf-69c6376e533mr2281250a12.17.1783841565395; Sun, 12 Jul 2026 00:32:45 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 3/3] bhyve: clear monitor reference on close Date: Sun, 12 Jul 2026 09:32:31 +0200 Message-ID: <20260712073231.6404-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260712073231.6404-1-bogorodskiy@gmail.com> References: <20260712073231.6404-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KRSDXVQFI3ZSZPAOHEGD5I2MEDDPGYNN X-Message-ID-Hash: KRSDXVQFI3ZSZPAOHEGD5I2MEDDPGYNN X-MailFrom: bogorodskiy@gmail.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 CC: Roman Bogorodskiy 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: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1783841852305158500 Content-Type: text/plain; charset="utf-8" Update virBhyveProcessStop() to set monitor to NULL after calling bhyveMonitorClose(). Signed-off-by: Roman Bogorodskiy Reviewed-by: Peter Krempa --- src/bhyve/bhyve_process.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index d501aa8bcc..636d74afcc 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -673,7 +673,7 @@ virBhyveProcessStop(struct _bhyveConn *driver, /* Destroy monitor before running the actual destroy command to prevent * it from detecting VM shutdown and entering this cleanup routine aga= in */ if ((priv !=3D NULL) && (priv->mon !=3D NULL)) - bhyveMonitorClose(priv->mon); + g_clear_pointer(&priv->mon, bhyveMonitorClose); =20 cmd =3D virBhyveProcessBuildDestroyCmd(driver, vm->def); if (virCommandRun(cmd, NULL) < 0) { --=20 2.52.0