From nobody Sat May 30 15:29:22 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=1779708057; cv=none; d=zohomail.com; s=zohoarc; b=BzQ7r7dDlnFqshy9bBr3uH/QE6ioJMJ7mDnnP2cFBQlXjz0gFSqsgMYQBcJ3bdhkyGQCiC8OJVgm6XkVnNR1wuCIn5/sDkbsjQsgsXgfARESK41tKX0qcBXSdfF4oWEsI2bFvoNgsywKuIqt0KQ1/VMi1c5hklJiiqt9dMd2H98= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779708057; 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=jD+pPY3X0FnSk53/hPMN1eus7hVdky0hY80BNIBnO98=; b=fmcAhZRp7ucytzT6sfmstbyCcmzaJ7cKeATIhRYPETwtv8QAdY3pbAQx+eDoNdWTY5YfFvQG7CYIduCX1CBLJAkyaarcYCqke5KyIPYlK9oZqKZ1+c1x4wyPC2nBcW7IIJezYSf+prFIuHvg0Orqsld97za5Rgfjw0xCCvNi+z4= 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 1779708057536606.9278403774126; Mon, 25 May 2026 04:20:57 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6C3CF41BE4; Mon, 25 May 2026 07:20:56 -0400 (EDT) Received: from [172.19.199.9] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 8251941B6E; Mon, 25 May 2026 07:18:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 1B0A641AD3; Mon, 25 May 2026 07:18:35 -0400 (EDT) Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) (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 86A7A41AC5 for ; Mon, 25 May 2026 07:18:33 -0400 (EDT) Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-67b8d9c26bbso19124803a12.2 for ; Mon, 25 May 2026 04:18:33 -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-bddc69d78cbsm386416666b.61.2026.05.25.04.18.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 04:18:31 -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=1779707912; x=1780312712; 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; bh=jD+pPY3X0FnSk53/hPMN1eus7hVdky0hY80BNIBnO98=; b=XcbuBgs+CjJkfahHvLM5GF3rSPiC3r8Nz+WfDBz/HApkddmGUVCyghpXAR3phM1y9V BiV1X71KdPoUnH//zSOSecrR09z8Je79JaKSHc25lub0xJXYt6Z53mNCsfqZToCoYQ1/ /ybPs+oO1eSPYDbk4BDOBUHWZnaappaikD/uKy0ozhG4C9a2oaaSJHy+7O0s0EZYbWyh Z0bRmd1EhkBaUKYxoqaDbEn5HaeKpg1QzblfeW+ixT5w7vCeGxGu5p5Su/670+b5rQeo 8BOZ+/TqXghB8jI3NF/l6OqoGMQRgG2pJddqUgytzmW78n5b62IRUWlK/k7Bo1TYq0vI S3OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779707912; x=1780312712; 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; bh=jD+pPY3X0FnSk53/hPMN1eus7hVdky0hY80BNIBnO98=; b=P/UH5doqG7uL9sXn2Zoxu22QDk74TLnHw4w9+mHXUxG+rA4jWNJFnI2abAygTVBKHj q7v4A2AIlvdx4PpfBCHg6cyjNfylYjQv+8FKUrp7sl+JWHOJUqIua8Gp7M6ctwkPnB7t ySWCPuL/u6V2mO4v36MONTmqavj+GaS9ATfaVlvCi57vPRcZchg634XGw4wZz5ks/cmH UntbymuoiStRYLSgl4VXNb1elf8HH+SSaQDJ6KoGy2oIykA8TG1yCsUrsn9o2tvAZmc0 Q6UcykSqLMwXLBCrxNoKFdCpdzoeCsZUTbf13n3l8AjDrZyqPy17T+7BJOrSp55HCf3p Ja1g== X-Gm-Message-State: AOJu0YwO70uTtTN0ACXyLYrYaA/A1VSh5t8OjnGGxQlABNajFFa4eWdF nL+Z1V77xpiyiViXoW42IMOXsFiwkoO+SCjnXtrOYlElvVL9SXcWMBjVyEZrfugZ X-Gm-Gg: Acq92OGA9r9f0SOzNFkHbnb7Rld6L+LFC+skeER5kox/3dYoEqMd/54KDjwfQzQt7UG n16GI9F089RlefbrLeMRRwDVfMvLaKVuEKzKewoVzhWvRcsEY47NF3lQZ74Vp3J5u7KlQCvHM05 ZNH4R0DrYj19DWpp5f13ELyTeK6ekTjqtPAwGwe9UR73wT2QBPl0ct7k1jtAglJaZaF3HMZXt1z xReynVLAY73wujLrDVSDWHYUq/T2Wy+tiDi1oYu8dPOYDi412B0W6WXit8KFSU5iMHw0c9RxH+f MKd+QOqnvIIFLChlX8F/xnVXtTZh5GEuc0Y3C/lkFCNqPg30/fWDaZ3uoBu0cnhHz6YQyPnX3bb r0/oZ16qC7Pw0UhM9W682xdJcqAN6dAJxOvldWy4Mb/RKdB04I6jv2bwc51COgc8rJGNOHU/dqZ SSHzSRbkpKaojsmmFS+wDIo5+hduA7FF5flEi2eNOkyeVwK2t/Z6B81UqT8iJX/FkqZzrlWSkIh ybPnHiglJ6V3rg5ttmcMwPLTJGnJMjCxY/96Q== X-Received: by 2002:a17:906:ef0d:b0:bd5:18e2:4c5 with SMTP id a640c23a62f3a-bdd26bd7977mr864720366b.47.1779707911783; Mon, 25 May 2026 04:18:31 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 1/4] bhyve: reorder qemu agent code Date: Mon, 25 May 2026 13:14:37 +0200 Message-ID: <20260525111440.47978-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260525111440.47978-1-bogorodskiy@gmail.com> References: <20260525111440.47978-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: LFDILYGTR2TGEVMDD6BYZKXEBY5CEVC5 X-Message-ID-Hash: LFDILYGTR2TGEVMDD6BYZKXEBY5CEVC5 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: 1779708060186154100 Content-Type: text/plain; charset="utf-8" Move all the helpers to the beginning for the file to be able to use them in every API implementation. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_driver.c | 181 ++++++++++++++++++++------------------- 1 file changed, 91 insertions(+), 90 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 331d9eb439..075b8ea64f 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -93,6 +93,97 @@ bhyveAutostartDomain(virDomainObj *vm, void *opaque) } } =20 + +static qemuAgent * +bhyveDomainObjEnterAgent(virDomainObj *obj) +{ + bhyveDomainObjPrivate *priv =3D obj->privateData; + qemuAgent *agent =3D priv->agent; + + VIR_DEBUG("Entering agent (agent=3D%p vm=3D%p name=3D%s)", + priv->agent, obj, obj->def->name); + + virObjectLock(agent); + virObjectRef(agent); + virObjectUnlock(obj); + + return agent; +} + + +static void +bhyveDomainObjExitAgent(virDomainObj *obj, qemuAgent *agent) +{ + virObjectUnlock(agent); + virObjectUnref(agent); + virObjectLock(obj); + + VIR_DEBUG("Exited agent (agent=3D%p vm=3D%p name=3D%s)", + agent, obj, obj->def->name); +} + + +static bool +bhyveDomainAgentAvailable(virDomainObj *vm, + bool reportError) +{ + bhyveDomainObjPrivate *priv =3D vm->privateData; + + if (virDomainObjGetState(vm, NULL) !=3D VIR_DOMAIN_RUNNING) { + if (reportError) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("domain is not running")); + } + return false; + } + + if (!priv->agent) { + if (bhyveFindAgentConfig(vm->def)) { + if (reportError) { + virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s", + _("QEMU guest agent is not connected")); + } + return false; + } else { + if (reportError) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("QEMU guest agent is not configured")); + } + return false; + } + } + return true; +} + + +static int +bhyveDomainEnsureAgent(virDomainObj *vm, + bool reportError) +{ + bhyveDomainObjPrivate *priv =3D vm->privateData; + + if (virDomainObjGetState(vm, NULL) !=3D VIR_DOMAIN_RUNNING) { + if (reportError) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("domain is not running")); + } + return -1; + } + + if (priv->agent) + return 0; + + if (!priv->eventThread && + virBhyveDomainObjStartWorker(vm) < 0) + return -1; + + if (bhyveConnectAgent(NULL, vm) < 0) + return -1; + + return 0; +} + + /** * bhyveDriverGetCapabilities: * @@ -1907,96 +1998,6 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain, } =20 =20 -static qemuAgent * -bhyveDomainObjEnterAgent(virDomainObj *obj) -{ - bhyveDomainObjPrivate *priv =3D obj->privateData; - qemuAgent *agent =3D priv->agent; - - VIR_DEBUG("Entering agent (agent=3D%p vm=3D%p name=3D%s)", - priv->agent, obj, obj->def->name); - - virObjectLock(agent); - virObjectRef(agent); - virObjectUnlock(obj); - - return agent; -} - - -static void -bhyveDomainObjExitAgent(virDomainObj *obj, qemuAgent *agent) -{ - virObjectUnlock(agent); - virObjectUnref(agent); - virObjectLock(obj); - - VIR_DEBUG("Exited agent (agent=3D%p vm=3D%p name=3D%s)", - agent, obj, obj->def->name); -} - - -static bool -bhyveDomainAgentAvailable(virDomainObj *vm, - bool reportError) -{ - bhyveDomainObjPrivate *priv =3D vm->privateData; - - if (virDomainObjGetState(vm, NULL) !=3D VIR_DOMAIN_RUNNING) { - if (reportError) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); - } - return false; - } - - if (!priv->agent) { - if (bhyveFindAgentConfig(vm->def)) { - if (reportError) { - virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s", - _("QEMU guest agent is not connected")); - } - return false; - } else { - if (reportError) { - virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", - _("QEMU guest agent is not configured")); - } - return false; - } - } - return true; -} - - -static int -bhyveDomainEnsureAgent(virDomainObj *vm, - bool reportError) -{ - bhyveDomainObjPrivate *priv =3D vm->privateData; - - if (virDomainObjGetState(vm, NULL) !=3D VIR_DOMAIN_RUNNING) { - if (reportError) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); - } - return -1; - } - - if (priv->agent) - return 0; - - if (!priv->eventThread && - virBhyveDomainObjStartWorker(vm) < 0) - return -1; - - if (bhyveConnectAgent(NULL, vm) < 0) - return -1; - - return 0; -} - - static int bhyveDomainGetHostnameAgent(virDomainObj *vm, char **hostname) --=20 2.52.0 From nobody Sat May 30 15:29:22 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=1779708107; cv=none; d=zohomail.com; s=zohoarc; b=fbAsY9h4FZSAu0YY6fSBnEnMw9UIxlT3GFWrsUPqCoJGvB4pIbAgTr8PMiFmwX6PQIUayRhCoUWAU01GKVeGHqOhCcaAko8POnUUankkgkHXG2GrpqskwQ2h+sKMkQky9A0ucg0YftWe0ztixO7xg3wXHUvGdWphZSc8m+RfwTg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779708107; 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=HNmdSq9pWlWt+UmSWqeHxelqCpamiZ+DIlH9qhC/5wM=; b=CQnCiPbncJX8/iDdpwzaZ5XFvczc6n1E4mcZFLLt0MJOWDiB8f5pr790Lxf4lddudMiTuvPHDCin8M/eePW4GY7s+IsYpzRoqAfm4nuXULz0s7UnwG4M72TnmlmnZ1cLtKgA3KqFRZ9kEP+dP6dYtOwKlJFnBkdmX2rwOuT1+i4= 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 1779708107674210.83957230094973; Mon, 25 May 2026 04:21:47 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DD20941B6D; Mon, 25 May 2026 07:21:46 -0400 (EDT) Received: from [172.19.199.9] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 718CE41CD6; Mon, 25 May 2026 07:18:59 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3DD7D41AC2; Mon, 25 May 2026 07:18:35 -0400 (EDT) Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) (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 AC32141AC7 for ; Mon, 25 May 2026 07:18:33 -0400 (EDT) Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-bd4d7f4fa02so1592962366b.3 for ; Mon, 25 May 2026 04:18:33 -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-bddc69d78cbsm386416666b.61.2026.05.25.04.18.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 04:18:32 -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=1779707912; x=1780312712; 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; bh=HNmdSq9pWlWt+UmSWqeHxelqCpamiZ+DIlH9qhC/5wM=; b=ejuzbBrf30v01xdANmG2C4b7z1SVjuymsMwzJe40WasaQxuhqbtg6TBSzBkIrJhX/6 fOrRlebTSuCfAbCqmC2vdJT5Qem2U/16CMM0ZJW971CwgjVdRsdGz8MvoFqZ9M+zK/JF NRX8bSYUbDQWAyNR3aPeYv2cV6TFnV5cNz2+9/5sXkCPxoqjpdlaNSG5lvY6u7LxVwrj KdxCmRVtdXIWu+B4vjium4rt0I6wpWQuBdlrIEwm3550zeoPQtcmWHdj8yWyZRk0WLmP 5l+VMRHFuKuwVkp+zb5WP/DlAS7lV28tSjUWzpA/exx8fp2h98z5tCKllq6lDS9ChGHn A1yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779707912; x=1780312712; 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; bh=HNmdSq9pWlWt+UmSWqeHxelqCpamiZ+DIlH9qhC/5wM=; b=OJnt3HAKbUwNqNpd4xNS6VCe8oKxtO47ysZvITzRJxQ2B36FJijz/3/2DB9I7lsGLF mJDC/x/mN7INqlSn9qZTf/OssGs8MSmV+5dggY3YL8VwY3ES2YZkvwjJH/AX7hImaEOk bV1ZWgie3Zgdmg9o2T/lGUaM1PQbHuZhb+tj3UcUBPmSoCNWcqbeYCN1PoDa+wNnMLc5 5qekOs+V0t+yk2Q48Scwl/xsCt3952eFELIi5DyNa58YZ/bCySTHrShrcYD/rT7JX37B A7Tok7ES01hCUo71nSn4WJeXAKzWD84SdK3UOoShaJyWtl03FgwU0ul3Z4+fibQuNDVE 9wfQ== X-Gm-Message-State: AOJu0YzOpAf9nLj2iPGd2EDU8pOTVn3HdhC2QTjlGE9iv582h7zIxuVj f8gXUQQXfN80crmtGw2HqmkqF7ic3Gz9hBeV5R/u4lKkY0jMh++Sg0kiYnBm7t8z X-Gm-Gg: Acq92OHX/2DuDKrylfhzjdSS6VNKRGkRET+7SiLDYnrI1x1GZ/MvZKhbJ0rPAjtS4M7 JZvTjDQwxQQPtbRRrzF4MmzPeHyjuu+L2p0RVJaSnqszOrsdQAnMlBkKxe3/PPWHUy6bRrvjvHX diMDZYgLFKpM4qpYevjRiYZbii1s6ipcnh+1LDfMcXCR/n2t2auXREfpQPdOVvNIId1qOFX0xTs 8wpvn4KyfYinpVWliehz7qlK8iZHGeu5+RoP5gTxN+VGfT+qM+GiVZSTixWswSH1rh1MvEQ+I4m FmuGYn6q4qZCWY0dHvar+CjWd6gKaurDHXMm/JmF+ayGTXAWRrQdWCluqwjnC3nIhRoxW35Eg69 nDPQuaQRx2Pd1ILU6hLQYevplqEuBxcytkQmWQ4UYfjKVW7Jsxk7asgpDquz3lWKsiDboOOCJmM mvSNR1QhmDl8XnHmWne7j6NYrHH0niXCx3dqWfW7vM1W+SOSzwx1sQLd1pwGVF6rLAur6fiHA36 EsERYm9vcWUXHTeM914/bnPv9vdaImHZTs/xy9Iz730dgHU X-Received: by 2002:a17:906:9fc9:b0:bd1:1391:c326 with SMTP id a640c23a62f3a-bdd24f471b5mr951785366b.15.1779707912414; Mon, 25 May 2026 04:18:32 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 2/4] bhyve: support getting interface addresses from agent Date: Mon, 25 May 2026 13:14:38 +0200 Message-ID: <20260525111440.47978-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260525111440.47978-1-bogorodskiy@gmail.com> References: <20260525111440.47978-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: LOJM2IG3VAQ2I2C53IBHDDHAYKDUWG33 X-Message-ID-Hash: LOJM2IG3VAQ2I2C53IBHDDHAYKDUWG33 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: 1779708111207154100 Content-Type: text/plain; charset="utf-8" Extend bhyveDomainInterfaceAddresses() to support the VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT source. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_driver.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 075b8ea64f..2556384002 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1957,6 +1957,7 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain, unsigned int flags) { virDomainObj *vm =3D NULL; + qemuAgent *agent; int ret =3D -1; =20 virCheckFlags(0, -1); @@ -1971,6 +1972,22 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain, goto cleanup; =20 switch (source) { + case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT: + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_QUERY) < 0) + goto cleanup; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + ret =3D qemuAgentGetInterfaces(agent, ifaces, true); + bhyveDomainObjExitAgent(vm, agent); + + endjob: + virDomainObjEndAgentJob(vm); + + break; + case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP: ret =3D virDomainNetARPInterfaces(vm->def, ifaces); break; @@ -1979,12 +1996,6 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain, ret =3D virDomainNetDHCPInterfaces(vm->def, ifaces); break; =20 - case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT: - virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, - _("Unsupported IP address data source %1$d"), - source); - break; - default: virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, _("Unknown IP address data source %1$d"), --=20 2.52.0 From nobody Sat May 30 15:29:22 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=1779708198; cv=none; d=zohomail.com; s=zohoarc; b=GRdWsFx1mzH/o4ca2n9eJ6YOQArWX/UYCC++og3MNRjFYG5Sn8q9O3vmLwSo33E6WiybjmHg4m7F2xx7EDNk8JArZBZookY7DKaevZuoe+VlXeggxp3d4h29jP/eE4sx55wWd/1PZVpRj8E5j/XUR+md7rbVyzk+bnDX3Z0OwRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779708198; 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=CSZGwgx+2MeRxIkT3R3vossQA2K+IbQtE1PVJtrWzC4=; b=SnfmHtLyOzmlNCgERup17QuEL2PfXsJdzVvA9HXg35yUExOgMksYlRpHUG5xm5s6eGkJvxM/yBt9a/D3hzmOGiIwvYog0yn2cuFy4gdHkPbk8Y3i7z9Q9vWzmrlqZ5LMkQfx/hjycpVHbBpRNWrzrie5cB+szqbkqqfnazad6TM= 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 1779708198003477.616534493888; Mon, 25 May 2026 04:23:18 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 838D241AE7; Mon, 25 May 2026 07:23:16 -0400 (EDT) Received: from [172.19.199.9] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id DD2B241B60; Mon, 25 May 2026 07:19:05 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B7B8B41AC7; Mon, 25 May 2026 07:18:35 -0400 (EDT) Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) (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 8C01341ADA for ; Mon, 25 May 2026 07:18:34 -0400 (EDT) Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-6877c719cb0so7251420a12.2 for ; Mon, 25 May 2026 04:18:34 -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-bddc69d78cbsm386416666b.61.2026.05.25.04.18.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 04:18:32 -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=1779707913; x=1780312713; 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; bh=CSZGwgx+2MeRxIkT3R3vossQA2K+IbQtE1PVJtrWzC4=; b=QANZ7lMlu2YFUIlby7GZaoy/m8Asy3aKB7hwNa9BhMycNBmF3NRvtyiXrnKRXWvsQy Cr+DKLotj8nf2bmv0wn8msNuYZzxs9+qM6GkP/gkPJJnUoQswzIFUu5CtMByMsLDrbiK 7zRhkyZVKhmUr/3pEBiESw2OtfdBrXEfcfm6uSJ8aCTF/keE7Hmx58EFhtMOyT7HiraX Ok3GjuV9KqoWgQPOfo/b4zKsiR0OYe3zT1pQQ+tZjMo/EKdde8YCPePSaMp7es4sVtlV 607FFY+hZIWl/j+Gr1SClBvIZV7XuxQa/trcKF5DBW5yN1qKGBqW8KUUQTd1HMsUl5S3 SWLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779707913; x=1780312713; 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; bh=CSZGwgx+2MeRxIkT3R3vossQA2K+IbQtE1PVJtrWzC4=; b=MU+OvqUg+exhiBJBbW7YD6Tq1Fo4a5A0juCMcH8Pet63HNxmllmYfU6cMQaRIeRRSt xHQnKpXebwHjddZF8L/6TpBkgdykMHmPVnrUw3NICK5CY6PExxnUUWosXKduvB93zLvr 9GyZfrA4ecLodFUVw/L57hlrLdhPb5b8UXhZ1g0fGnI3Q2upedxm4SM5PCABPXdgeYyg jeGJp9E2DBeQ2ceuC+2SX1hVt9FjUhm2HhA1/o3FDZBuSHKoDsOT/4Xb9p7TDiNsPGme y7shCaS65rrkcCPQAKQ6o0cu9/+xSTxfqQULjMpsmdfm0zkrPFsuCLw3yR0RBGC1+bal T34g== X-Gm-Message-State: AOJu0Yxbi4YFYTyOPLNWqbDQf2kc56cL/pbe1YPf+FEHY897pvQRi1Qp AEfuOBn+x2pL5r7y3KjOUd3soKGFVtyyLEq80Js7z9JPBql577B5k3Lsk7AejvJb X-Gm-Gg: Acq92OHyBrW02/Q/6EYLCIlS7D9LRHL6ENnMfZG4G0P4DyioCwL3ytZaslk60V9jN2c IOW+04Ki9yJ1sU20OqGjv+gWhRRqtc2N+AxyYVFqzTt5nmlkw/XqJUhm0gv3WA/VT0NH6VP/otu aMQFxKsJ1xCunCpuJCfdTzBQ/b1/hWs9asuXBOCj15H6FJQmF49msSnwnVv/bAlYoTmoEUYRYb8 Gn4ZlmYcJ8CDRGnFUbZhypiIZy0d4afe2HTFbGGzg+FI3JSxrFkfGGBjzJtJC8M8i3HVg3UuWRb aF1YPlSHyXkrCkxAo5/GOu09DCIp6+4wuoVndiB02kbWVGamSC+FS7GLxWsSIhx3DNbGW+FbHZi MpSOjJJerh9VtsP8F27ibNGNczz2u/0SBHCCv3gRa7P79KhYdh97Cyw4WOa+Mg2FgaTGVrOI0dr W6bv7/SzKrVhnYh3Ae9Sj8vxBxEGMNIlHmXa5fn62CtNz4UXP3XkKZ5ekQ6bg8FdF0oT7nvvP9y lWI5InCDFHkJY57Wg/VRn6k7a/9g30jgOUsbQ== X-Received: by 2002:a17:907:271b:b0:bd5:2859:ed0a with SMTP id a640c23a62f3a-bdd2839ce32mr604320366b.42.1779707913009; Mon, 25 May 2026 04:18:33 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 3/4] hypervisor: qemu_agent: add virDomainFSInfoFormat() Date: Mon, 25 May 2026 13:14:39 +0200 Message-ID: <20260525111440.47978-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260525111440.47978-1-bogorodskiy@gmail.com> References: <20260525111440.47978-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6G6LHRA6G2HPA7XALODGSDAN5RGIMJAM X-Message-ID-Hash: 6G6LHRA6G2HPA7XALODGSDAN5RGIMJAM 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: 1779708199881158500 Content-Type: text/plain; charset="utf-8" The virDomainFSInfoFormat() and qemuAgentFSInfoToPublic() function implementations are not driver dependent and can be shared across drivers, so move them to a common place to avoid code duplication. Also, rename virDomainFSInfoFormat() to qemuAgentFSInfoFormat() to follow the naming scheme in qemu_agent.c. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/hypervisor/qemu_agent.c | 70 ++++++++++++++++++++++++++++++++++++ src/hypervisor/qemu_agent.h | 5 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_driver.c | 72 +------------------------------------ 4 files changed, 77 insertions(+), 71 deletions(-) diff --git a/src/hypervisor/qemu_agent.c b/src/hypervisor/qemu_agent.c index 70f0cde5dd..e549947fbf 100644 --- a/src/hypervisor/qemu_agent.c +++ b/src/hypervisor/qemu_agent.c @@ -2611,3 +2611,73 @@ qemuAgentGetLoadAvg(qemuAgent *agent, =20 return 0; } + +static virDomainFSInfoPtr +qemuAgentFSInfoToPublic(qemuAgentFSInfo *agent, + virDomainDef *vmdef) +{ + virDomainFSInfoPtr ret =3D NULL; + size_t i; + + ret =3D g_new0(virDomainFSInfo, 1); + + ret->mountpoint =3D g_strdup(agent->mountpoint); + ret->name =3D g_strdup(agent->name); + ret->fstype =3D g_strdup(agent->fstype); + + if (agent->disks) + ret->devAlias =3D g_new0(char *, agent->ndisks); + + for (i =3D 0; i < agent->ndisks; i++) { + qemuAgentDiskAddress *agentdisk =3D agent->disks[i]; + virDomainDiskDef *diskDef; + + diskDef =3D virDomainDiskByAddress(vmdef, + &agentdisk->pci_controller, + agentdisk->ccw_addr, + agentdisk->bus, + agentdisk->target, + agentdisk->unit); + if (diskDef !=3D NULL) + ret->devAlias[ret->ndevAlias++] =3D g_strdup(diskDef->dst); + else + VIR_DEBUG("Missing target name for '%s'.", ret->mountpoint); + } + + return ret; +} + +/* Returns: 0 on success + * -1 otherwise + */ +int +qemuAgentFSInfoFormat(qemuAgentFSInfo **agentinfo, + int nagentinfo, + virDomainDef *vmdef, + virDomainFSInfoPtr **info) +{ + int ret =3D -1; + virDomainFSInfoPtr *info_ret =3D NULL; + size_t i; + + info_ret =3D g_new0(virDomainFSInfoPtr, nagentinfo); + + for (i =3D 0; i < nagentinfo; i++) { + if (!(info_ret[i] =3D qemuAgentFSInfoToPublic(agentinfo[i], vmdef)= )) + goto cleanup; + } + + *info =3D g_steal_pointer(&info_ret); + ret =3D nagentinfo; + + cleanup: + if (info_ret) { + for (i =3D 0; i < nagentinfo; i++) { + /* if there was an error, free any memory we've allocated for = the + * return value */ + virDomainFSInfoFree(info_ret[i]); + } + g_free(info_ret); + } + return ret; +} diff --git a/src/hypervisor/qemu_agent.h b/src/hypervisor/qemu_agent.h index 9117d3743c..3dbc3baec1 100644 --- a/src/hypervisor/qemu_agent.h +++ b/src/hypervisor/qemu_agent.h @@ -196,3 +196,8 @@ int qemuAgentGetLoadAvg(qemuAgent *agent, double *load5m, double *load15m, bool report_unsupported); + +int qemuAgentFSInfoFormat(qemuAgentFSInfo **agentinfo, + int nagentinfo, + virDomainDef *vmdef, + virDomainFSInfoPtr **info); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index a76da45fb9..0aad60fed7 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1714,6 +1714,7 @@ qemuAgentArbitraryCommand; qemuAgentClose; qemuAgentDiskInfoFree; qemuAgentFSFreeze; +qemuAgentFSInfoFormat; qemuAgentFSInfoFree; qemuAgentFSThaw; qemuAgentFSTrim; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bcafacfb60..58b68a6e2b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18767,76 +18767,6 @@ qemuDomainGetFSInfoAgent(virDomainObj *vm, return ret; } =20 -static virDomainFSInfoPtr -qemuAgentFSInfoToPublic(qemuAgentFSInfo *agent, - virDomainDef *vmdef) -{ - virDomainFSInfoPtr ret =3D NULL; - size_t i; - - ret =3D g_new0(virDomainFSInfo, 1); - - ret->mountpoint =3D g_strdup(agent->mountpoint); - ret->name =3D g_strdup(agent->name); - ret->fstype =3D g_strdup(agent->fstype); - - if (agent->disks) - ret->devAlias =3D g_new0(char *, agent->ndisks); - - for (i =3D 0; i < agent->ndisks; i++) { - qemuAgentDiskAddress *agentdisk =3D agent->disks[i]; - virDomainDiskDef *diskDef; - - diskDef =3D virDomainDiskByAddress(vmdef, - &agentdisk->pci_controller, - agentdisk->ccw_addr, - agentdisk->bus, - agentdisk->target, - agentdisk->unit); - if (diskDef !=3D NULL) - ret->devAlias[ret->ndevAlias++] =3D g_strdup(diskDef->dst); - else - VIR_DEBUG("Missing target name for '%s'.", ret->mountpoint); - } - - return ret; -} - -/* Returns: 0 on success - * -1 otherwise - */ -static int -virDomainFSInfoFormat(qemuAgentFSInfo **agentinfo, - int nagentinfo, - virDomainDef *vmdef, - virDomainFSInfoPtr **info) -{ - int ret =3D -1; - virDomainFSInfoPtr *info_ret =3D NULL; - size_t i; - - info_ret =3D g_new0(virDomainFSInfoPtr, nagentinfo); - - for (i =3D 0; i < nagentinfo; i++) { - if (!(info_ret[i] =3D qemuAgentFSInfoToPublic(agentinfo[i], vmdef)= )) - goto cleanup; - } - - *info =3D g_steal_pointer(&info_ret); - ret =3D nagentinfo; - - cleanup: - if (info_ret) { - for (i =3D 0; i < nagentinfo; i++) { - /* if there was an error, free any memory we've allocated for = the - * return value */ - virDomainFSInfoFree(info_ret[i]); - } - g_free(info_ret); - } - return ret; -} - static int qemuDomainGetFSInfo(virDomainPtr dom, virDomainFSInfoPtr **info, @@ -18864,7 +18794,7 @@ qemuDomainGetFSInfo(virDomainPtr dom, if (virDomainObjCheckActive(vm) < 0) goto endjob; =20 - ret =3D virDomainFSInfoFormat(agentinfo, nfs, vm->def, info); + ret =3D qemuAgentFSInfoFormat(agentinfo, nfs, vm->def, info); =20 endjob: virDomainObjEndJob(vm); --=20 2.52.0 From nobody Sat May 30 15:29:22 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=1779708249; cv=none; d=zohomail.com; s=zohoarc; b=bi+THmRzTLRL7U9eZFuxaWgG6KDo7N7Q/dXeJ/zM8aANN89D8wVAajMLjaj77EIibMm5XWoM31wVbT3H83X1yZlguyNbL1+rkSFv5OO9W6wVIQRiKIO2Lvr7pUQ1EKk3JUIkfgCqkomJNfwIFuFOFROaCQBS/CqBbURsYmVHMJQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779708249; 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=HA9KMh94bdOx2j7Kjvrl4wtm9koVYyTyBsMB2rHg3vI=; b=frS9NdWGQdx9H3v0AzgPGnZ8XbQwNuj3ee86mVMXptUJ6KDRJH5l+Oe8jplmduT4wV5ZUjlzVko2h83/EzakvKNiPCbO9JwhJfcBOgj35T8IlbjBartJtl68ASoISj/I17bE4UrkituSxTaxsalYwVyB+esAdkvw8Nhx4lV8Q/8= 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 1779708249755598.7660879285899; Mon, 25 May 2026 04:24:09 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 603E641AC7; Mon, 25 May 2026 07:24:08 -0400 (EDT) Received: from [172.19.199.9] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 9B77741D52; Mon, 25 May 2026 07:19:11 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D036E41AC2; Mon, 25 May 2026 07:18:35 -0400 (EDT) Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) (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 31F1B41A86 for ; Mon, 25 May 2026 07:18:35 -0400 (EDT) Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-bce57c132b2so1788666766b.0 for ; Mon, 25 May 2026 04:18:35 -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-bddc69d78cbsm386416666b.61.2026.05.25.04.18.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 04:18:33 -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=1779707914; x=1780312714; 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; bh=HA9KMh94bdOx2j7Kjvrl4wtm9koVYyTyBsMB2rHg3vI=; b=qXKuxnuLUWtuYrCVqFUwmMiTGa+fLuNtbjDp4zr/yX24bXZzbxvFUl5MD4QnGzZ487 kl9Sk/dVPnbqnarahend2vzc7g4tQhqxlvuPqUoikKs1RwTzYn35Ax8O7HyA0wtQ1se3 aIKjvukERWlc/R9ppTlV6SzV1Gria4YwjCKMAHSt6JJAHqcFSti5nZXo5AjZtiGFmbAc tlUFVLSh5Rq2vk3XIXdK2zL+fN3GU1EWMsoIVQv3EydJrEVq5J6FiI8VkuUAL2I5KrPz jHUyWM+ge+Xl4BxNAXa0bqjpqJ2q65Peoaqn5ogG/Twcx8nwfmtB40G3i+ly9lTBx3h3 /iBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779707914; x=1780312714; 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; bh=HA9KMh94bdOx2j7Kjvrl4wtm9koVYyTyBsMB2rHg3vI=; b=L/E+v5g6+YddGaQTgLZo94uFzJjb2QQDJBIrnd0nFDYAAWEUG5roRfH5Sjb6zkCQXN 0sGfMEWHdE0iqv0uoX8tgHE9AlkzWiC9dwbun3atRyPnRx67Vtxo0/jqgifA8DeTeK4V HjVMAlMizYBXQUNInGQVL5WxAGAGLXwEYl5zOQ6/kNrlhZxjlxwc+XXIUe07W1nCQWZ1 m9pF+WraIgQ8UKn5Pi/LjCWxub3M2eFsszsoWurRTxT0pUIcW8QukPK6jCKBK0qFrSn1 qco7ZF1n0g1rkZ6wqmYMV+9l1r5BTLQLGgU4knozKntfjoE6lSdmEdvgITEUnXCSVfaj DpIQ== X-Gm-Message-State: AOJu0Yy5EO2DiBKGLKq19xQGJfuNPUiE5i8hceT8/Opk0WC7xrPkDtGi aGSUkInJhbyBYMgVhfdL+RVUU5w5cj4gDQboUsnAZrkB8kkIVhORN39dyiUoXUwe X-Gm-Gg: Acq92OEZjnapv1LrSIP0ZYAMKUP6btOJuywVlDv6/GwtZPzpUIsfmIR3q8CMoPMkKcz eORpnOXJkSsDpSW3joCCEPhBogOtVPP1VrnkQGGAP5QoYCIASU4R4vSy4v3DsPjO34lbFZDX0UA uNtX7ORLWpvKEgmLO8mLByAP1Y7CKMwWpuMQL6QU89hnY+Cx7Ak0n+yUUxLXW8LgzlZC6FGN3nl x6I5eo4BbigEoLr7Ittibvf5OzC8vc+hQaZsP/m9e0a2JTmMU/DdGQ4wT2X7VlwHmQb6OnX3Xsd CvZsQD6jbKf3TCDQ3jfp8Pzz4qGHY99sG4wtNCKhg4ZO3M7xmPReSo5bdBLzzDCedbZrdVxX6iy 5ifYv9K2+NFd01aTCBlFunKqi0B2XxroGfbpR89iFFhHoMPRYxdccXdX0ZHreB9UBB6cdWlDcta ljWeertomNpc1eeWuMAFYDANtCtLTeRfUrSt4zUIJMwxULJA7/WA2yzgDMePhCqej+yur44fkmh dzdulTkVNZ2SeBlU/E+z6+B9CkgFkhowkdpIA== X-Received: by 2002:a17:907:944b:b0:bd2:15b5:bf60 with SMTP id a640c23a62f3a-bdd47dfbbcdmr642051966b.3.1779707913720; Mon, 25 May 2026 04:18:33 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 4/4] bhyve: implement the domainGetFSInfo() API Date: Mon, 25 May 2026 13:14:40 +0200 Message-ID: <20260525111440.47978-5-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260525111440.47978-1-bogorodskiy@gmail.com> References: <20260525111440.47978-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: JVV7QD2QFDXQBH5JSWIHAZWD3OBNVSQF X-Message-ID-Hash: JVV7QD2QFDXQBH5JSWIHAZWD3OBNVSQF 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: 1779708250109158500 Content-Type: text/plain; charset="utf-8" This implementation is identical to the one found in the qemu driver. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_driver.c | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 2556384002..2e7a534396 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2307,6 +2307,74 @@ bhyveDomainSetMemoryParameters(virDomainPtr domain, return ret; } =20 +static int +bhyveDomainGetFSInfoAgent(virDomainObj *vm, + qemuAgentFSInfo ***info) +{ + int ret =3D -1; + qemuAgent *agent; + + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_QUERY) < 0) + return ret; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + ret =3D qemuAgentGetFSInfo(agent, info, true); + bhyveDomainObjExitAgent(vm, agent); + + endjob: + virDomainObjEndAgentJob(vm); + return ret; +} + +static int +bhyveDomainGetFSInfo(virDomainPtr dom, + virDomainFSInfoPtr **info, + unsigned int flags) +{ + virDomainObj *vm; + qemuAgentFSInfo **agentinfo =3D NULL; + int ret =3D -1; + int nfs =3D 0; + + virCheckFlags(0, ret); + + if (!(vm =3D bhyveDomObjFromDomain(dom))) + return ret; + + if (virDomainGetFSInfoEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + + if ((nfs =3D bhyveDomainGetFSInfoAgent(vm, &agentinfo)) < 0) + goto cleanup; + + if (virDomainObjBeginJob(vm, VIR_JOB_QUERY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + ret =3D qemuAgentFSInfoFormat(agentinfo, nfs, vm->def, info); + + endjob: + virDomainObjEndJob(vm); + + cleanup: + if (agentinfo) { + size_t i; + for (i =3D 0; i < nfs; i++) + qemuAgentFSInfoFree(agentinfo[i]); + g_free(agentinfo); + } + virDomainObjEndAPI(&vm); + return ret; +} + static virHypervisorDriver bhyveHypervisorDriver =3D { .name =3D "bhyve", .connectURIProbe =3D bhyveConnectURIProbe, @@ -2378,6 +2446,7 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainQemuAgentCommand =3D bhyveDomainQemuAgentCommand, /* 12.4.0 */ .domainGetMemoryParameters =3D bhyveDomainGetMemoryParameters, /* 12.4= .0 */ .domainSetMemoryParameters =3D bhyveDomainSetMemoryParameters, /* 12.4= .0 */ + .domainGetFSInfo =3D bhyveDomainGetFSInfo, /* 12.5.0 */ }; =20 =20 --=20 2.52.0