src/bhyve/bhyve_domain.c | 29 +++++++++++++++++++++++++ src/bhyve/bhyve_driver.c | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+)
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 <bogorodskiy@gmail.com>
---
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);
}
+static int
+bhyveDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt,
+ virDomainObj *vm,
+ virDomainDefParserConfig *config G_GNUC_UNUSED)
+{
+ bhyveDomainObjPrivate *priv = vm->privateData;
+
+ if (virXPathInt("string(./agentTimeout)", ctxt, &priv->agentTimeout) == -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 = vm->privateData;
+
+ virBufferAsprintf(buf, "<agentTimeout>%i</agentTimeout>\n", priv->agentTimeout);
+
+ return 0;
+}
+
virDomainXMLPrivateDataCallbacks virBhyveDriverPrivateDataCallbacks = {
.alloc = bhyveDomainObjPrivateAlloc,
.free = bhyveDomainObjPrivateFree,
+ .parse = bhyveDomainObjPrivateXMLParse,
+ .format = bhyveDomainObjPrivateXMLFormat,
};
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;
}
+static int
+bhyveDomainAgentSetResponseTimeout(virDomainPtr domain,
+ int timeout,
+ unsigned int flags)
+{
+ virDomainObj *vm = NULL;
+ bhyveDomainObjPrivate *priv = NULL;
+ struct _bhyveConn *privconn = domain->conn->privateData;
+ int ret = -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 minimum '%2$d'"),
+ timeout, VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN);
+ return -1;
+ }
+
+ if (!(vm = bhyveDomObjFromDomain(domain)))
+ return -1;
+
+ if (virDomainAgentSetResponseTimeoutEnsureACL(domain->conn, vm->def) < 0)
+ goto cleanup;
+
+ priv = vm->privateData;
+ if (priv->agent != NULL) {
+ virObjectLock(priv->agent);
+ qemuAgentSetResponseTimeout(priv->agent, timeout);
+ virObjectUnlock(priv->agent);
+ }
+
+ priv->agentTimeout = 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 = 0;
+
+ cleanup:
+ virDomainObjEndAPI(&vm);
+ return ret;
+}
+
static virHypervisorDriver bhyveHypervisorDriver = {
.name = "bhyve",
.connectURIProbe = bhyveConnectURIProbe,
@@ -2886,6 +2932,7 @@ static virHypervisorDriver bhyveHypervisorDriver = {
.domainAuthorizedSSHKeysGet = bhyveDomainAuthorizedSSHKeysGet, /* 12.5.0 */
.domainAuthorizedSSHKeysSet = bhyveDomainAuthorizedSSHKeysSet, /* 12.5.0 */
.domainRename = bhyveDomainRename, /* 12.6.0 */
+ .domainAgentSetResponseTimeout = bhyveDomainAgentSetResponseTimeout, /* 12.7.0 */
};
--
2.52.0
On Thu, Aug 06, 2026 at 07:48:52PM +0200, Roman Bogorodskiy wrote: > 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 <bogorodskiy@gmail.com> > --- > src/bhyve/bhyve_domain.c | 29 +++++++++++++++++++++++++ > src/bhyve/bhyve_driver.c | 47 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 76 insertions(+) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
© 2016 - 2026 Red Hat, Inc.