From nobody Mon Sep 14 04:49:16 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=1788375223; cv=none; d=zohomail.com; s=zohoarc; b=CFbpqU5qZqXIvssD5wZE8GANge6HzezNld35+Pn61BT/SMZJdixUT1seSlBIkA8OQGB4pgzKeEFMT8gN1A/wuvRCMIb1riiZ+sxag7tYc62ppQXWONabNLCsQKW82BBA90mg6snHerJNx9xs986XqsMnnufHkQeaiTnNhuTV+fk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788375223; 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=1gqR0uLDIA+czJrGeAEhVBghDzA82O54OYPXGzI/pGE=; b=MpYjpW2YFBzVJvbyhNVWjSFG98RiXMUnJ9H2WE2zfA1WQg9mIEBaO3AronnXuQkJdptxavLfYnQF6d7HoU0mtme3P9qVkQttM+upEzrkYQ8mDu8SRLliTkWj4GUTBCUy9VlQtG+mbuSCdxmfk0jT2a+qAcMlyCksuV+aLhs3BV4= 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 1788375223041551.5703148235494; Wed, 2 Sep 2026 11:53:43 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0FD583FCA7; Wed, 2 Sep 2026 14:53:42 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 3672E41939 for ; Wed, 2 Sep 2026 14:51:37 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7B53B3F86B; Wed, 2 Sep 2026 14:51:25 -0400 (EDT) Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) (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 C7FE63F324 for ; Wed, 2 Sep 2026 14:51:24 -0400 (EDT) Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-c207cb16cf5so204593466b.1 for ; Wed, 02 Sep 2026 11:51:24 -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 a640c23a62f3a-c25f4173423sm286266b.13.2026.09.02.11.51.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 11:51:22 -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=1788375083; x=1788979883; 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=1gqR0uLDIA+czJrGeAEhVBghDzA82O54OYPXGzI/pGE=; b=Cj+eRV34ydxxXfNGXf7/PdU56d9LlMDACkmdoQgHKtw8ucggg25KzEa0BDcAHIZ9z4 AaHJ7NbLoISzBz2Q9WHuQ1MDOhv1DFz2Z+gp3LHJSInjHZo7huaIvEJqBJ40L/ZD09H2 QPqGYAPd8OLlcClCclq1AuLxjuoyWzVqiRtCPma0ZLlW5RnSjL/2KDu4Shy7rx+wkL8V /GniN4BtiOrEEY0uMFUicNsi6Oa1e5KdafcjhNIaKVliHZidSAyug17O7I3fwPp70xNE B3tE5HqBCONcyag9g0Ryb3HpqlNcpuRFC7lsUBnvcvIl1TM4KDmEn+Jhldg+H4k5s5dn QTHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788375083; x=1788979883; 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=1gqR0uLDIA+czJrGeAEhVBghDzA82O54OYPXGzI/pGE=; b=FKcylWAt/Ica1i1Z3u0Msc3cDEX7ILvoTsWtvaqmh7t6gGZrt01i+KFnyJm7O0YVn+ Yx+Y9yOH9uFB7ETAxWvpJ8l9zBanpvNHvb6GdRs58w69c23fi90QTJ8IKnr9edfHEB3U sU/jiSAVU01gt2e93jMhqYmbwIZj0EP+k2x7XUhTEpZx3Mf55JMZ0+MEPrQj+DdtxCYf 2qSyuP2SkmQSOu0+uJNawdrWTGU2VS030MqM/IJkwXTU0hmlWW7jqp70zWviDQ2uHF3G rM/rm3Hlu1kQmsu++37Og7x+18gmzgad6xbmVBaboPDjQWzT4YeAUcg2qpuRl/vw/sMn ICSA== X-Gm-Message-State: AFuF++lXVdT7ZnLLePgjn6mB7qi0RvFICIw8RoQ2YpJA9NJocga19R38 zZ0mqHlJEAF/jK3cPw9UGXemSNdT4sqjCKO7RRfAl7TvnYqnktywDeN0uoe9pZ/I4sjfkw== X-Gm-Gg: AYBFou0UWDRV1OvuOFb4fYIsToR7P2TI+q26wlvpjVlqNBuz6ZNsHFZbIrhc9nCTmRP UGqBpn0b6GcKnkzjFj20ITnF/x3mUKq1zgp7lqCXZAOl7bGGXC/9i1/9BY9mCc/bnf96yNzNu4L R9VFBfsnehHohnadNcxnckOefA72rGhVxsvccdLyYBnq81mCvDNbWGJ7Gln58je4Dc3hHCz5gzR B5QSlkD/11K3A6YjCu35T21AYdfA2+ghP+eOx3XxdLe7+DiVek963vBJwp2e4r/U5sSUrEsmqbT Ua6iF+UDHPrUoGyCbXjQHmFZI52hPXbrmVZFSDUwWIDtfX1Suwu4MhngwyXj9FQADDV64xRVdOT +A27Y2wJrDNwuhqKKdy67NOQ2hSRsaTHY33xAeBXcoMkztEzvzmI0t67UABQ8LVB7d7QUP3xTL0 v2GJMe2qNHZbYrzRh+sGzHo/OHAkbtvwOEl1fXkucUV3JQsCok3ng2+2I35tVLbtKioa1VyHNm2 N02BNR667c+qJY9i+XNw9D5I7WcpXESbR9Q/UKtfyj9mF53xaDvKL3NE426URyRkqP7hnHul7U= X-Received: by 2002:a17:907:948e:b0:c25:c67a:3b68 with SMTP id a640c23a62f3a-c25d554a2aamr401903066b.20.1788375083165; Wed, 02 Sep 2026 11:51:23 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 1/3] bhyve: add validation for lifecycle actions Date: Wed, 2 Sep 2026 20:49:53 +0200 Message-ID: <20260902184955.21957-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260902184955.21957-1-bogorodskiy@gmail.com> References: <20260902184955.21957-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EUUJNRR7MAEEA3LPJOXV26ZGVMZH4IBM X-Message-ID-Hash: EUUJNRR7MAEEA3LPJOXV26ZGVMZH4IBM 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 , Michal Privoznik 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: 1788375224690154100 Content-Type: text/plain; charset="utf-8" The bhyve driver currently supports redefining 'onPoweroff' and 'onReboot', and possible actions are 'destroy' and 'restart'. Redefining 'onCrash' is not supported. Validate all these in bhyveDomainDefValidate(). Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_domain.c | 36 ++++++++++++++++++++++++++++++++++++ src/bhyve/bhyve_domain.h | 3 +++ 2 files changed, 39 insertions(+) diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c index 726cf1ffed..3ecb1d52cb 100644 --- a/src/bhyve/bhyve_domain.c +++ b/src/bhyve/bhyve_domain.c @@ -520,6 +520,39 @@ bhyveDomainDeviceDefValidate(const virDomainDeviceDef = *dev, } =20 =20 +int +bhyveValidateLifecycleAction(virDomainLifecycleAction onPoweroff, + virDomainLifecycleAction onReboot, + virDomainLifecycleAction onCrash) +{ + if ((onPoweroff !=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY && + onPoweroff !=3D VIR_DOMAIN_LIFECYCLE_ACTION_RESTART) || + (onReboot !=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY && + onReboot !=3D VIR_DOMAIN_LIFECYCLE_ACTION_RESTART)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("bhyve driver supports only 'restart' and 'destro= y' actions for 'on_reboot'/'on_poweroff'")); + return -1; + } + + if (onCrash !=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("bhyve driver does not support 'on_crash' actions= other than 'destroy'")); + return -1; + } + + return 0; +} + + +static int +bhyveValidateDomainLifecycleAction(const virDomainDef *def) +{ + return bhyveValidateLifecycleAction(def->onPoweroff, + def->onReboot, + def->onCrash); +} + + static int bhyveDomainDefValidate(const virDomainDef *def, void *opaque G_GNUC_UNUSED, @@ -607,6 +640,9 @@ bhyveDomainDefValidate(const virDomainDef *def, return -1; } =20 + if (bhyveValidateDomainLifecycleAction(def) < 0) + return -1; + if (!def->os.loader) return 0; =20 diff --git a/src/bhyve/bhyve_domain.h b/src/bhyve/bhyve_domain.h index fa7a685d59..c9fa776651 100644 --- a/src/bhyve/bhyve_domain.h +++ b/src/bhyve/bhyve_domain.h @@ -55,3 +55,6 @@ extern virXMLNamespace virBhyveDriverDomainXMLNamespace; int virBhyveDomainObjStartWorker(virDomainObj *dom); void virBhyveDomainObjStopWorker(virDomainObj *dom); int bhyveDomainNamePathsCleanup(const char *name, bool bestEffort); +int bhyveValidateLifecycleAction(virDomainLifecycleAction onPoweroff, + virDomainLifecycleAction onReboot, + virDomainLifecycleAction onCrash); --=20 2.55.0 From nobody Mon Sep 14 04:49:16 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=1788375288; cv=none; d=zohomail.com; s=zohoarc; b=ZmIZMfY/+s+ZiUqNMsozrwemIz7ThYFQOw6jTVhoOOqe3mhhkU/8HjvosW/LW4qvkig7l1nzAppSe+FTLw2lOznzhPiQEDPFzG7arBUutNwRHotfZlYgN8GM+XPP0OCIINr1JYTV3s2hBALfP2tPH5FCiNG+TUX4QxPfwmegos0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788375288; 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=Z2cLUFQ9vGLz9sRflCDkmAAofzxf4/0F822Loziknq0=; b=APmzk+Ud1MPOxn8z5FjBMa1iYHvNTLlYqBG/sZDTRvrxcgDGd1G2JB+7I59Od4FWo/GMgjiwYhpDJap7BP0aEwRTGcy6eHApWW4yLtCQNIAR3LrlOOIkkEKp/3cEydLSYiHnu90HRY7WAPP9BNOJYBO0p9SuG1tvC6Vdiw1qcJg= 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 1788375288617847.8911273194481; Wed, 2 Sep 2026 11:54:48 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 578D73FD21; Wed, 2 Sep 2026 14:54:47 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 0B79C41A0A for ; Wed, 2 Sep 2026 14:51:41 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DD5B43F86F; Wed, 2 Sep 2026 14:51:25 -0400 (EDT) Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) (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 166F23F869 for ; Wed, 2 Sep 2026 14:51:25 -0400 (EDT) Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-6a623987d32so2425279a12.1 for ; Wed, 02 Sep 2026 11:51:25 -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 a640c23a62f3a-c25f4173423sm286266b.13.2026.09.02.11.51.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 11:51:23 -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=1788375084; x=1788979884; 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=Z2cLUFQ9vGLz9sRflCDkmAAofzxf4/0F822Loziknq0=; b=MckAm3dqsuD3q721aYfD8dS5TKlFM4XM7GGwOzR4i34qAba6qeJvmUOlrx06kvuITu YNOqfzegATCkMA6Ts3Sl+BYOIZwtPD5tEYoK6Q9TCqhAS3KS7nvp3RpQZC3QRC3RKQWm BpN05fLkdHENBRN8uq8oVQe8dWveecK0uv9YDbpY3XJzaJIpVsD9VE8ikm1jKXqSwZrn dZPTL/szRyhLh+fIOrSCmyjXSmZ5yG0CAihqo/2eXa2y3X3Fa0ctsxiLzZ+FOu8/RLLf AYyQCdPq8TVzXpUlXeFUXxDFQKyEOoG2bLdTZrZJV54xLt4aH4Ev7oVCjzsd0SXbf7BK cSFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788375084; x=1788979884; 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=Z2cLUFQ9vGLz9sRflCDkmAAofzxf4/0F822Loziknq0=; b=Ehcuep1CBaGkKtdvIG7YXaobMdMKxNlbgdZGuczWmZeRb7ptypsjbdNWimFnlYI6Dc VzmMW1/o2f9qe/sLxusvqUQ47tGY6FA7cSnHdlxJ6h16P9DvF7P7yh2cFElEipWTrXMT 1F3oaQRux/NAAdpJS31Qujrzw+8P5H/q+esOCa4SKA+ln3nMN5DU5xjQ61XUnIWuUoHz hBpbGiV0EKtes+I0t708agc/IRBIuNE1OvQVKUtREXrD3uaA/lA9d35m6wQVBI8GSKW3 OW/BkSST0X+r2G5pZymiMEI0J8JeWyh5/h2SbtvRzjJmL4fdaE3Hk+5SYZdI2wTcKSJa eNUA== X-Gm-Message-State: AFuF++nGbKfnz6TmBrx5tjVruuYRyTSh9rnlpqHbCYxdf1kRB1sDHPlF /Gx8Xak93VoAdt2SQJ6SjJ1vUXoHqFPpLMk2IFC19L3cPo1dNDaIf0zCEwQCmY2N1zQcow== X-Gm-Gg: AYBFou33liJxX0KdX4NsUDoeah6+3fWq4DXBXnNwauVQywf5Sti7tX1JpNj/i4SeIwm BKs9OanAMGIM5C257v3uC68zKyLrciT7JkIAjSigSVRCrizBxikXQeRcj+riyaRPbhWIuO5pkby py+mc5zP2ZchJs3nwZE3dfdRVw2EDNyk7IOW86HwbUHTZ2neWxTNpl61slpN73xlEEGcEtuLlfG rg3PPa+LeaVP75rfiapBeDvTOCNAzkueQLx8hXXYZ6DXl0GnCnVNabi2TIlP2MfURHcqr5wOj8w Ieqp9HmKRocuDcVRgA9OIFldIlTQOxkFA3upNusoczLUGqQbmON+0yVR3CCpA4xfgMZghYOUilk pweYcAmU1/QGCvPysi9PnjRlH264FHKOVKscQmxxpy94cwmR0aYzg5M7TObjTGlWDQ/WFKZA+9A 5rzQGLIMU8NhbRHM78lYiyCCP6+st4cL+0zoPTOogypQsT0/Qr9TblbKxpbWDwD3mHJKE4ClRRf xKUkg1UhvCjEmwYrU6wTVSLmsipO4sHO7DjKg/hcajeQueqZk25TxOe7d5OTpohTBmpNzOJKWo= X-Received: by 2002:a05:6402:5113:b0:6a5:f202:c1c7 with SMTP id 4fb4d7f45d1cf-6a68257bcfamr3780099a12.8.1788375083603; Wed, 02 Sep 2026 11:51:23 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 2/3] bhyve: monitor: respect on_poweroff / on_reboot settings Date: Wed, 2 Sep 2026 20:49:54 +0200 Message-ID: <20260902184955.21957-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260902184955.21957-1-bogorodskiy@gmail.com> References: <20260902184955.21957-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: SW46DS5OQ5SV3UFCKOP2YME6ZS6HXWVD X-Message-ID-Hash: SW46DS5OQ5SV3UFCKOP2YME6ZS6HXWVD 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 , Michal Privoznik 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: 1788375289280158500 Content-Type: text/plain; charset="utf-8" Currently, the bhyve driver respects domain's on_poweroff and on_reboot settings for when shutdown and reboot are triggered via libvirt API. However, they are not respected when the event is triggered within the guest. Address that by updating monitor to execute the configured action. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_driver.c | 12 ------------ src/bhyve/bhyve_monitor.c | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 41bcf9b559..d46a401507 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1118,12 +1118,6 @@ bhyveDomainShutdownFlags(virDomainPtr dom, unsigned = int flags) if (!(vm =3D bhyveDomObjFromDomain(dom))) goto cleanup; =20 - if (vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RESTART || - vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RESTART_REN= AME) { - isReboot =3D true; - VIR_INFO("Domain on_poweroff setting overridden, attempting reboot= "); - } - priv =3D vm->privateData; agentRequested =3D flags & VIR_DOMAIN_SHUTDOWN_GUEST_AGENT; signalRequested =3D flags & VIR_DOMAIN_SHUTDOWN_SIGNAL; @@ -1189,12 +1183,6 @@ bhyveDomainReboot(virDomainPtr dom, unsigned int fla= gs) if (!(vm =3D bhyveDomObjFromDomain(dom))) goto cleanup; =20 - if (vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY || - vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE) { - isReboot =3D false; - VIR_INFO("Domain on_reboot setting overridden, shutting down"); - } - priv =3D vm->privateData; agentRequested =3D flags & VIR_DOMAIN_REBOOT_GUEST_AGENT; signalRequested =3D flags & VIR_DOMAIN_REBOOT_SIGNAL; diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index 8391f10d34..379e588070 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -161,12 +161,24 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_U= NUSED, void *opaque) } else if (WIFEXITED(status)) { if (WEXITSTATUS(status) =3D=3D 0 || mon->reboot) { /* 0 - reboot */ - VIR_INFO("Guest %s rebooted; restarting domain.", name); - virBhyveProcessRestart(driver, vm); + if (vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTR= OY || + vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_PRESE= RVE) { + VIR_INFO("Guest %s rebooted; domain on_reboot setting over= ridden, shutting down.", name); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N, false); + } else { + VIR_INFO("Guest %s rebooted; restarting domain.", name); + virBhyveProcessRestart(driver, vm); + } } else if (WEXITSTATUS(status) < 3) { /* 1 - shutdown, 2 - halt, 3 - triple fault. others - error */ - VIR_INFO("Guest %s shut itself down; destroying domain.", name= ); - virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN, f= alse); + if (vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RES= TART || + vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RES= TART_RENAME) { + VIR_INFO("Guest %s shut itself down; domain on_poweroff se= tting overridden, attempting reboot.", name); + virBhyveProcessRestart(driver, vm); + } else { + VIR_INFO("Guest %s shut itself down; destroying domain.", = name); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N, false); + } } else { VIR_INFO("Guest %s had an error and exited with status %d; des= troying domain.", name, WEXITSTATUS(status)); --=20 2.55.0 From nobody Mon Sep 14 04:49:16 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=1788375366; cv=none; d=zohomail.com; s=zohoarc; b=YhKfTShLOH5JXZ6fFJ7UjCk3206/cSo4q0k2UV2ZHXeIDk2VdIaDs1d45x6p7FyAQu4B7KKV81yOUkB2oxHwqUGCW6gyPwt8PL1RU3ySHOqpO5qA3CnVtHB6bvtO5QCt2v+7p5uno/pZNOdv+GBLp8NX7ENJo+3UhAN9o6fVKOM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788375366; 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=6GH8qRMnYe0r5EHK4KrhNSBuK6o7dHoYVH/PP5ZzYOQ=; b=Lr2d2yA2xreYAYr/ZM/OEErbmEkd9HYz3epKi0bKfsSzdRjVuw1OucT8qA4xWTPyjNtO9NEz35x6friQH7pZY8fuFX6I5BbgrhYqLs5k0l2CPbHPDpj4hT8yApQd1juX7kuGekzqR9rJnsE4Qd9tNmReVRrPvfFUb2TxwBG8Nb8= 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 1788375366592973.5198494032593; Wed, 2 Sep 2026 11:56:06 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 413CB3F882; Wed, 2 Sep 2026 14:56:05 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 0AA5C41B31 for ; Wed, 2 Sep 2026 14:51:47 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9ED6D3F324; Wed, 2 Sep 2026 14:51:26 -0400 (EDT) Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) (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 CC1B33F86B for ; Wed, 2 Sep 2026 14:51:25 -0400 (EDT) Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-c252c7270faso210369566b.3 for ; Wed, 02 Sep 2026 11:51:25 -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 a640c23a62f3a-c25f4173423sm286266b.13.2026.09.02.11.51.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 11:51:23 -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=1788375084; x=1788979884; 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=6GH8qRMnYe0r5EHK4KrhNSBuK6o7dHoYVH/PP5ZzYOQ=; b=MXEkZwj/U5tx/cOr741vhjPBsEe8HrdUybmgCsLXYIQL5W8VHMR52Td89KcJJ1e8x6 X7ndQ/UnXHJIGxgCOnYSY9+vZ/t8v2Nn27J3ZCXjywYCwUI3RMIqKFDXfDIVWlBPRlkA sjKdIcqyKNs4fl0Hn9CCYD0CbaT4l50MqdKpBRJ5XMDiOXAnNbAPMFVxCprkrncPeo3r FS4Xszv5vq057b1speDslFvHnzc5hJbaaIMhSuj2alhqFkDGYS94kmhlOF+QE7sBuw2r SM+9uzgPh2vKK6snTLYs+7v9xb+tnqHsNRAYVU6pl5bZGTjWdcVzn03e1ZMRouGyd24S uZbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788375084; x=1788979884; 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=6GH8qRMnYe0r5EHK4KrhNSBuK6o7dHoYVH/PP5ZzYOQ=; b=pFurkTgiRpRcpMn9d1sdpOaT+uZnr9TJxfnTGlCPzFtX2V1uT6FXFjzrxnFkdzktls Q4NDscHotzgi62ZcwQepJUZn5aJTQ7qyD4eT61TAfwdwQMjSPwC0AVC/XmB0QKtvMyWH RZyc4PY8K6cKlHt2qUqnlTTmKs+OmYEdHD6OyxMcDZU9h339DXpHbEbssfk+3n9xUojh wBfOM0FYVRmoX2+5yhYkeH2JwishauorrK31WR69yp8hE0yO8pcSJezbRPHqnFJgEIOD WmWmnoT66vlL69SpL3q6IcDDEOQk5SACs76NRYzc14DGSTkWnViy8LwP851+0QlWZ/eN zfQQ== X-Gm-Message-State: AFuF++k16yRgBm6P4h+wqia3WFXrF6MyS7OKrTKRoGt1ZBrQpmiDkanY woEbvvP9YHK+VbQXGBtwOQbeZWJ7wCGSncPEpqNR04zeQQE7UBZBTW7riBj/yRF5vV7qOw== X-Gm-Gg: AYBFou1bForybS1UuLoZnmY7WtljTTYSRV23B2QGyeZDiusD5L6UAl59faNnimgRhzy rPiD+1pkbLU8HxxWHgYxSbCCI3X5gYrjoPag1Sphkh9litNBeq/iQ7RWSz28iouGA0wLO31TxpY SzoyjvJzi5L+joG/yjno2eeT6d23GAbO2vgTkhKgxF7sGssZqdD52E66XZB7tYBPnOMjT8H4WTx MQdBhxx7UgmfVT+iYvTtQXmY8hsBM/4v55C1CjFAD0DUJ+HfCeIaJDtnT5+mherDBT4stVTSREo j1rgxmXEMs1rVg2iSBgOjgIeh1xvheBdf6SEYTWHIAaNWoFUOkjmyF3tfUqFD1OR+PXbcVQrNmX xyTBYP2gtZmA4z+K+ndADjWgSbecTOs2tyeRM+csC6F9RZxhNpum9l95KmDrJxfWElnbL7ZxFS0 flV7b48NIxEnibPYDrBtEF9Rlk4D6Xl61bczDbUJaiV19zLLLR2Wz0g9hXgDXnyQXhqyKiSzo48 eYZOwp3yZMoYrO/a164gR8VnowQ6lh1znOoDffzENGyxXeF+mtSdmiJ2Rx4UBfLBZ6Jj4kQPds= X-Received: by 2002:a17:907:9625:b0:c25:4f7c:8ec5 with SMTP id a640c23a62f3a-c25d5505c79mr453250266b.23.1788375084087; Wed, 02 Sep 2026 11:51:24 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 3/3] bhyve: implement virDomainSetLifecycleAction() API Date: Wed, 2 Sep 2026 20:49:55 +0200 Message-ID: <20260902184955.21957-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260902184955.21957-1-bogorodskiy@gmail.com> References: <20260902184955.21957-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: QE634EPF32OMFYJIUX4AYWJHNNSPL3U4 X-Message-ID-Hash: QE634EPF32OMFYJIUX4AYWJHNNSPL3U4 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 , Michal Privoznik 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: 1788375367451158500 Content-Type: text/plain; charset="utf-8" Implement virDomainSetLifecycleAction() API for the bhyve driver. Support both config and live configuration update. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_driver.c | 110 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index d46a401507..cf4e918472 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2806,6 +2806,115 @@ bhyveDomainRename(virDomainPtr domain, return ret; } =20 +static int +bhyveDomainSetLifecycleActionValidate(virDomainDef *def, + virDomainLifecycle type, + virDomainLifecycleAction action) +{ + virDomainLifecycleAction onPoweroff =3D def->onPoweroff; + virDomainLifecycleAction onReboot =3D def->onReboot; + virDomainLifecycleAction onCrash =3D def->onCrash; + + switch (type) { + case VIR_DOMAIN_LIFECYCLE_POWEROFF: + onPoweroff =3D action; + break; + case VIR_DOMAIN_LIFECYCLE_REBOOT: + onReboot =3D action; + break; + case VIR_DOMAIN_LIFECYCLE_CRASH: + onCrash =3D action; + break; + case VIR_DOMAIN_LIFECYCLE_LAST: + break; + } + + if (bhyveValidateLifecycleAction(onPoweroff, onReboot, onCrash) < 0) + return -1; + + return 0; +} + +static void +bhyveDomainModifyLifecycleAction(virDomainDef *def, + virDomainLifecycle type, + virDomainLifecycleAction action) +{ + switch (type) { + case VIR_DOMAIN_LIFECYCLE_POWEROFF: + def->onPoweroff =3D action; + break; + case VIR_DOMAIN_LIFECYCLE_REBOOT: + def->onReboot =3D action; + break; + case VIR_DOMAIN_LIFECYCLE_CRASH: + def->onCrash =3D action; + break; + case VIR_DOMAIN_LIFECYCLE_LAST: + break; + } +} + +static int +bhyveDomainSetLifecycleAction(virDomainPtr domain, + unsigned int type, + unsigned int action, + unsigned int flags) +{ + struct _bhyveConn *privconn =3D domain->conn->privateData; + virDomainObj *vm =3D NULL; + virDomainDef *def =3D NULL; + virDomainDef *persistentDef =3D NULL; + int ret =3D -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); + + if (!virDomainDefLifecycleActionAllowed(type, action)) + goto cleanup; + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return -1; + + if (virDomainSetLifecycleActionEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (virDomainObjBeginJob(vm, VIR_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0) + goto endjob; + + if ((def && bhyveDomainSetLifecycleActionValidate(def, type, action) <= 0) || + (persistentDef && bhyveDomainSetLifecycleActionValidate(persisten= tDef, type, action) < 0)) + goto endjob; + + if (def) { + bhyveDomainModifyLifecycleAction(def, type, action); + + if (virDomainObjSave(vm, privconn->xmlopt, + BHYVE_STATE_DIR) < 0) + goto endjob; + } + + if (persistentDef) { + bhyveDomainModifyLifecycleAction(persistentDef, type, action); + + if (virDomainDefSave(persistentDef, privconn->xmlopt, + BHYVE_CONFIG_DIR) < 0) + goto endjob; + } + + ret =3D 0; + + endjob: + virDomainObjEndJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static int bhyveDomainAgentSetResponseTimeout(virDomainPtr domain, int timeout, @@ -3144,6 +3253,7 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainRename =3D bhyveDomainRename, /* 12.6.0 */ .domainAgentSetResponseTimeout =3D bhyveDomainAgentSetResponseTimeout,= /* 12.7.0 */ .domainGetGuestInfo =3D bhyveDomainGetGuestInfo, /* 12.7.0 */ + .domainSetLifecycleAction =3D bhyveDomainSetLifecycleAction, /* 12.8.0= */ }; =20 =20 --=20 2.55.0