From nobody Mon Aug 24 09:07:51 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=1786038684; cv=none; d=zohomail.com; s=zohoarc; b=VYSJJJAoWhPWXzxuaNHwON0y+WKJ4GaXDvVtgTCth0jQQ/iYYOX7mk3PTmviiKS2ii1EEj0Bj4eCxD+kmoSP1oEwT4A6kcpwPMNuIZOTb4PKtXyvjYyGNHIZHcpaphDAKkUlNHr21nMd2zjej03yImeb20ohiGMwBeU6uaY/DVs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786038684; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=Gq8XyUTOGc42l7ps0aRC/+81aNJKJaE202uZB/EjUMo=; b=Tgxnq3D/PO/EryEGLj2S87smGPBpCM03wqyDnPw6914zrm/73pMBTsewWBHRsiw+VBgqb30nlltdITTVNfqM3bWRZ45/thmKOQMBjXB7gjPzouR5YLqHaRidhSamb0ptS3oJ9d4SxVrOd9m6hc00YlYyl8MR4FwVshYBx1ae6S4= 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 1786038684857880.2835850375054; Thu, 6 Aug 2026 10:51:24 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 860AD41897; Thu, 6 Aug 2026 13:51:23 -0400 (EDT) Received: from [172.19.199.10] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id E5FCD41B4C; Thu, 6 Aug 2026 13:50:14 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 497EE3FCA7; Thu, 6 Aug 2026 13:50:06 -0400 (EDT) Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (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 613C13FA2E for ; Thu, 6 Aug 2026 13:50:05 -0400 (EDT) Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-6a17c04563fso2677991a12.3 for ; Thu, 06 Aug 2026 10:50:05 -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-c2056c15cd5sm164191366b.17.2026.08.06.10.50.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 10:50:03 -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=1786038604; x=1786643404; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Gq8XyUTOGc42l7ps0aRC/+81aNJKJaE202uZB/EjUMo=; b=DQB1+TRTRaO69l++YkwdMM6ywtEpAXj6ugXK2KCNTdEjFyAAY8v4ah8caY2xlaPlS3 ZoKEGY64NrRPbJMV9qPLBfm9AJ6dZ+rC15f07zZZwC4rgVXEXY387TQf9R/dtxlokDLN c8H3F8sNPow1FHT382IZXSMfftewfAoZRqpsD4YOUSLVDHNmtunZWCMoibo2Wo7FiXja gqCFyU4JjPdZU/BIYMulrS/UuvYM767m1WIY/HNtq2Xe0dYf4WnicZtIhyQLdNypEy0I TGNSMHWPezD1m2OqLYXbkcZIv9c1OygZqne3FvR8LcdW0Fy5cZJcmda6DirfQhwFwOh/ wtNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786038604; x=1786643404; h=content-transfer-encoding:mime-version: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=Gq8XyUTOGc42l7ps0aRC/+81aNJKJaE202uZB/EjUMo=; b=qIVJdcts0a6Xt/NtgkOJJ0dC3NGwLbUynjnsjcduEg2y6d735pf09ErTVkVRLZ0f9/ CkgjxRy5k3tYQq6XgTL/BsRUI4W6P5HE87JFqz7gdDpv9aJEHe/GBFtc3BeKsMpqrWZe FPZrsIc/cq5X4q2oGkIggauKS04jFoxgs8QTPz/xnpw1b18O6QrWg5V71Iy5n/dDyprC +zMsEeDg0VwgxPABb9wPEeRI0Bky7SAMwDHSXTUIZCPKEvGeVNfkjj+QGMb+lJSEm8q5 jFL3uWObFBnR/9BtcP0Wo5GPOBic6pUnBLAcaNDQu3xRIKMGgy8lEzFu3bAYFgSxmgL5 BCSg== X-Gm-Message-State: AOJu0YxKEhAw6sKllNrWWlC8ftvnFGmmo6C8d+ZSzwu3nXDzf3RYynkS iFUyERLqZrCpbEhByoOAcvlliheXiY58QJPgE8T1R+qH7oGdphb4HfMZIi7IUml4 X-Gm-Gg: AR+sD132sV30vuuv1ON7+WmfQj4/1aiH4GbTS63yvplt3c0mERt8gho2rN8ZzlSRDik GsOZU57Kpdre1z91O96qmbOIQw+iugAoLk9EqsvrddFhtpu0bQo2Yzk2jM9H+pX8ZpNk+CGnFCZ BgolE7ProGbPtDmOX0qAp0Q+lqkvZb762XDRWG2Mkx/jObNdqe88h5UR6+AgrkvVGndjKu68UUv 5g604nuECrHHoQ5BMsVn+GaLATtsUJgM61vjqynr/sh6Cq5tXKkE1akdy1p0iqSF8VL0/Q4KVgx h4vepUXYDbLMlKUv2Gv64KETzbaadxXjzmtA9PKUaa8vqJatrbgHhpXWabY+jSfYiB94XqJPzIX kKJt8tycHJKBHJEmFRpo8QZZHv49I97CJvaPqtW7P/K6pEnHvwvF0GBIQRcuYjiYhXPQGhZOvJn QDekquDExdwzp7QfHeqpxXfZpKEqEUqFfoBXpxHCY1gbkVS3089Hsc2yfsk3234DFaBXCdk14v0 mvDtE9vZVqJQEwMhGyIuVK4tRdTcuouJ88gX1XrSW1/pKTQiIWfOK9bKWpO9Go1ceBLBAsPIxs= X-Received: by 2002:a17:906:9f85:b0:c19:6d4a:425b with SMTP id a640c23a62f3a-c2073364454mr187550766b.18.1786038603592; Thu, 06 Aug 2026 10:50:03 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH] bhyve: implement virDomainAgentSetResponseTimeout() Date: Thu, 6 Aug 2026 19:48:52 +0200 Message-ID: <20260806174852.21713-1-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: VNL2TKXRAPSYGZINA5PRAESW7Q2PPEML X-Message-ID-Hash: VNL2TKXRAPSYGZINA5PRAESW7Q2PPEML 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: 1786038685941158500 Content-Type: text/plain; charset="utf-8" Implement the virDomainAgentSetResponseTimeout() which allows to set the qemu guest agent timeout. The change consists of two main parts: - bhyveDomainAgentSetResponseTimeout() driver method implementation which actually sets the agent timeout. - Updating virDomainXMLPrivateDataCallbacks with "parse" and "format" methods implementation for parsing and formatting of the agent timeout value in domain's XML. Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_domain.c | 29 +++++++++++++++++++++++++ src/bhyve/bhyve_driver.c | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c index b6344185b7..3b5a9b47a3 100644 --- a/src/bhyve/bhyve_domain.c +++ b/src/bhyve/bhyve_domain.c @@ -62,9 +62,38 @@ bhyveDomainObjPrivateFree(void *data) g_free(priv); } =20 +static int +bhyveDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, + virDomainObj *vm, + virDomainDefParserConfig *config G_GNUC_UNUS= ED) +{ + bhyveDomainObjPrivate *priv =3D vm->privateData; + + if (virXPathInt("string(./agentTimeout)", ctxt, &priv->agentTimeout) = =3D=3D -2) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("failed to parse agent timeout")); + return -1; + } + + return 0; +} + +static int +bhyveDomainObjPrivateXMLFormat(virBuffer *buf, + virDomainObj *vm) +{ + bhyveDomainObjPrivate *priv =3D vm->privateData; + + virBufferAsprintf(buf, "%i\n", priv->agen= tTimeout); + + return 0; +} + virDomainXMLPrivateDataCallbacks virBhyveDriverPrivateDataCallbacks =3D { .alloc =3D bhyveDomainObjPrivateAlloc, .free =3D bhyveDomainObjPrivateFree, + .parse =3D bhyveDomainObjPrivateXMLParse, + .format =3D bhyveDomainObjPrivateXMLFormat, }; =20 static bool diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 4abcd70aba..0823b54b0d 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2808,6 +2808,52 @@ bhyveDomainRename(virDomainPtr domain, return ret; } =20 +static int +bhyveDomainAgentSetResponseTimeout(virDomainPtr domain, + int timeout, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + bhyveDomainObjPrivate *priv =3D NULL; + struct _bhyveConn *privconn =3D domain->conn->privateData; + int ret =3D -1; + + virCheckFlags(0, -1); + + if (timeout < VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN) { + virReportError(VIR_ERR_INVALID_ARG, + _("guest agent timeout '%1$d' is less than the mini= mum '%2$d'"), + timeout, VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN); + return -1; + } + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return -1; + + if (virDomainAgentSetResponseTimeoutEnsureACL(domain->conn, vm->def) <= 0) + goto cleanup; + + priv =3D vm->privateData; + if (priv->agent !=3D NULL) { + virObjectLock(priv->agent); + qemuAgentSetResponseTimeout(priv->agent, timeout); + virObjectUnlock(priv->agent); + } + + priv->agentTimeout =3D timeout; + + if (virDomainObjIsActive(vm)) { + if (virDomainObjSave(vm, privconn->xmlopt, BHYVE_STATE_DIR) < 0) + VIR_WARN("Failed to save status on vm %s", vm->def->name); + } + + ret =3D 0; + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static virHypervisorDriver bhyveHypervisorDriver =3D { .name =3D "bhyve", .connectURIProbe =3D bhyveConnectURIProbe, @@ -2886,6 +2932,7 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainAuthorizedSSHKeysGet =3D bhyveDomainAuthorizedSSHKeysGet, /* 12= .5.0 */ .domainAuthorizedSSHKeysSet =3D bhyveDomainAuthorizedSSHKeysSet, /* 12= .5.0 */ .domainRename =3D bhyveDomainRename, /* 12.6.0 */ + .domainAgentSetResponseTimeout =3D bhyveDomainAgentSetResponseTimeout,= /* 12.7.0 */ }; =20 =20 --=20 2.52.0