From nobody Tue Dec 16 13:49:45 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1743166504; cv=none; d=zohomail.com; s=zohoarc; b=YJhN+/DxFHe5jQSrnooyTgxfiK2Dz5pWdlqPqp+hvTCnUmOZPr3SozQ/jL3UlbfnutrywzhWq9ZbzWMDI9DZbxjTOQNRRKISO/s7rOsqjcP+ZGrFxoO7WvPIe8qxaI6LMiExCPXpNwMBk8aNEbz0rpgWnIsHp79lxW4YB/gQWBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1743166504; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=pg5Md4MUhrwSHvp8jDLIFUow7+WkDIFWFO1vhuacwR8=; b=kd9E/TAzqlOT7d6fpCdSvTaRz1XDwRODIme2DzC4jfx9HXBw+H0rGPqP46+zAWRhJzlBPGioeZoW2XcdgTb2fLWgCXfnRgbYAqX8Cg/BO+V8XckcV1GpBCXDASi0uW5O2nAEwuLRSjiZB5ex8ZDZ8q72cUz1pOb7k1wPQ14i9fQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 174316650476134.80451962200971; Fri, 28 Mar 2025 05:55:04 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id D65D7136A; Fri, 28 Mar 2025 08:55:03 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id AD7EF11FB; Fri, 28 Mar 2025 08:53:05 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id C87AD1219; Fri, 28 Mar 2025 08:53:00 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id AC0271219 for ; Fri, 28 Mar 2025 08:52:48 -0400 (EDT) Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-228-TS9RclrwMhCOFEuefxz_DA-1; Fri, 28 Mar 2025 08:52:46 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DD01818EBE8F for ; Fri, 28 Mar 2025 12:52:45 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.22.8]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D4A521828A9E; Fri, 28 Mar 2025 12:52:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1743166368; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KwjYFkDUZ8pD6dMnHLL8GEqeG4ZbdOp5zRk5a2lGbPw=; b=cupXNpGS+JLmD1o1Cu1dn9FM0cAmNQvLuciiK6dKrKWTQ8LXEaWB96vvW+o+QsOSjBowKE Q8Fu6NyAasFIXCVK0oSR/ElDKZV6L4tIVT9mou3M/4Y2B1Ff+YjHBgN30DDTQokj47fv7j 7Y5oA7E2j8ZIPI/NtSQYaLq4N15oqYU= X-MC-Unique: TS9RclrwMhCOFEuefxz_DA-1 X-Mimecast-MFC-AGG-ID: TS9RclrwMhCOFEuefxz_DA_1743166366 To: devel@lists.libvirt.org Subject: [PATCH 5/8] qemu: monitor: Support FD passing of sockets to 'qemuMonitorJSONNBDServerStart' Date: Fri, 28 Mar 2025 13:52:31 +0100 Message-ID: <61597a6daee4b3b2a189f47540fef171527ae59c.1743166287.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: lWBz3PW0j06qI1tSVpdVK7wYYqtnnqstOBfqX4svPkc_1743166366 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: UQTG33BAGHCOUV4LBRQIFYJYRIJURKR6 X-Message-ID-Hash: UQTG33BAGHCOUV4LBRQIFYJYRIJURKR6 X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Peter Krempa X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1743166508921019100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Upcoming patches will extend the FD passing infrastructure to the backup job so that users can pass an opened socket instead of qemu opening it themself to bypass difficulities caused by containerizing libvirt. Signed-off-by: Peter Krempa --- src/conf/storage_source_conf.c | 1 + src/conf/storage_source_conf.h | 1 + src/qemu/qemu_monitor_json.c | 22 +++++++++++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c index 9f28580406..8a063be244 100644 --- a/src/conf/storage_source_conf.c +++ b/src/conf/storage_source_conf.c @@ -155,6 +155,7 @@ virStorageNetHostDefFree(size_t nhosts, g_free(hosts[i].name); g_free(hosts[i].socket); g_free(hosts[i].fdgroup); + g_free(hosts[i].qemu_fdname); } g_free(hosts); diff --git a/src/conf/storage_source_conf.h b/src/conf/storage_source_conf.h index de7895e637..ebddf28cd6 100644 --- a/src/conf/storage_source_conf.h +++ b/src/conf/storage_source_conf.h @@ -157,6 +157,7 @@ struct _virStorageNetHostDef { char *socket; /* path to unix socket */ char *fdgroup; + char *qemu_fdname; /* name used with 'getfd' to pass to qemu - interna= l */ }; diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 994cf53d9f..34ed42b004 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6323,6 +6323,24 @@ qemuMonitorJSONBuildUnixSocketAddress(const char *pa= th) } +static virJSONValue * +qemuMonitorJSONBuildFDSocketAddress(const char *name) +{ + g_autoptr(virJSONValue) addr =3D NULL; + g_autoptr(virJSONValue) data =3D NULL; + + if (virJSONValueObjectAdd(&data, "s:str", name, NULL) < 0) + return NULL; + + if (virJSONValueObjectAdd(&addr, + "s:type", "fd", + "a:data", &data, NULL) < 0) + return NULL; + + return g_steal_pointer(&addr); +} + + int qemuMonitorJSONNBDServerStart(qemuMonitor *mon, const virStorageNetHostDef *server, @@ -6341,8 +6359,10 @@ qemuMonitorJSONNBDServerStart(qemuMonitor *mon, case VIR_STORAGE_NET_HOST_TRANS_UNIX: addr =3D qemuMonitorJSONBuildUnixSocketAddress(server->socket); break; - case VIR_STORAGE_NET_HOST_TRANS_RDMA: case VIR_STORAGE_NET_HOST_TRANS_FD: + addr =3D qemuMonitorJSONBuildFDSocketAddress(server->qemu_fdname); + break; + case VIR_STORAGE_NET_HOST_TRANS_RDMA: case VIR_STORAGE_NET_HOST_TRANS_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("invalid server address")); --=20 2.49.0