From nobody Mon Feb 9 10:33:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652778466; cv=none; d=zohomail.com; s=zohoarc; b=iBonzAnBysTTJPY08oYC/2Edjd6sHEaN74KN9QLyqWuR+/Kw6m8oLYy3+EjpKmXz/zx5OantgkREFpD/vOQxmk/NU2rhd41it5P3cnqFTmjeuvM3Tj+85djpuKCkcSwrpFcKEwCg2AsZl7V0KKN9YXZYlDfhRS2DaT2IURic/3s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652778466; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=00QIAy1NL8m+fIrXNgp5O8TvjMEKQkHisH7m/aIvg9U=; b=W0BCPUKzQXAKSNBxe5K8aRI1wM/xByJuqAzpx5YWO0VfwhQsF3Ap9buq1Me9adl0MTBrxtk+mC42S8DPDfkzSoMyCeT3sE8Q/lDJ+Nafqkw22mdBDlCN4aUFhZn6+ol0sM1xhcQVAKq9TyqyMivSDx8fSGPtwR/JVN1HytfnNT8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652778466155352.22191261803755; Tue, 17 May 2022 02:07:46 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-439-0SNU2qjkOXih-gsPiIVzSg-1; Tue, 17 May 2022 05:07:37 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A93DE3C11CCD; Tue, 17 May 2022 09:07:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 93CC7156D12B; Tue, 17 May 2022 09:07:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 61200194707C; Tue, 17 May 2022 09:07:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4F77C1947056 for ; Tue, 17 May 2022 09:07:34 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 44CFA156D12A; Tue, 17 May 2022 09:07:34 +0000 (UTC) Received: from speedmetal.lan (unknown [10.40.208.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id C15B7156D120 for ; Tue, 17 May 2022 09:07:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652778465; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=00QIAy1NL8m+fIrXNgp5O8TvjMEKQkHisH7m/aIvg9U=; b=YDK5kPSDsa1NmIQc32d1M4+uDmaMqZr/kKwZAMsqTYFSJyFXsTx9RN/OmDR8gTw0pKgkPY ZeU8r08WAFiGGfZv+hdjQi5xkPYkY5yWJKuu1Yz+iXYJ9/18XFkjKSOLbvC8Lf/AnJmYJT OiEmqG5n43XBuxtIuHBxf/x/hpe3nw8= X-MC-Unique: 0SNU2qjkOXih-gsPiIVzSg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 7/9] qemu: fd: Remove support for 'direct' fd passing from 'qemuFDPass' Date: Tue, 17 May 2022 11:07:24 +0200 Message-Id: <403b0edd43bbf298120b41a9c5ba1646cb6e5180.1652778351.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652778468260100001 Content-Type: text/plain; charset="utf-8" This finishes the separation of the fdset and direct helpers. Remove 'qemuFDPassNewDirect' and all internals which were applicable only in direct mode. Signed-off-by: Peter Krempa --- src/qemu/qemu_fd.c | 116 ++++++++------------------------------------- 1 file changed, 19 insertions(+), 97 deletions(-) diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c index fc9fecbb0e..cff2428727 100644 --- a/src/qemu/qemu_fd.c +++ b/src/qemu/qemu_fd.c @@ -34,7 +34,6 @@ struct qemuFDPassFD { }; struct _qemuFDPass { - bool useFDSet; unsigned int fdSetID; size_t nfds; struct qemuFDPassFD *fds; @@ -65,20 +64,6 @@ qemuFDPassFree(qemuFDPass *fdpass) } -static int -qemuFDPassValidate(qemuFDPass *fdpass) -{ - if (!fdpass->useFDSet && - fdpass->nfds > 1) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("direct FD passing supports only 1 file descripto= r")); - return -1; - } - - return 0; -} - - /** * qemuFDPassNew: * @prefix: prefix used for naming the passed FDs @@ -99,7 +84,6 @@ qemuFDPassNew(const char *prefix, qemuFDPass *fdpass =3D g_new0(qemuFDPass, 1); fdpass->prefix =3D g_strdup(prefix); - fdpass->useFDSet =3D true; if (priv) { fdpass->fdSetID =3D qemuDomainFDSetIDNew(priv); @@ -112,34 +96,6 @@ qemuFDPassNew(const char *prefix, } -/** - * qemuFDPassNewDirect: - * @prefix: prefix used for naming the passed FDs - * @dompriv: qemu domain private data - * - * Create a new helper object for passing FDs to QEMU. - * - * The instance created via 'qemuFDPassNewDirect' will result in the older - * approach of directly using FD number on the commandline and 'getfd' - * QMP command. - * - * Non-test uses must pass a valid @dompriv. - * - * @prefix is used for naming the FD if needed and is later referenced when - * removing the FDSet via monitor. - */ -qemuFDPass * -qemuFDPassNewDirect(const char *prefix, - void *dompriv G_GNUC_UNUSED) -{ - qemuFDPass *fdpass =3D g_new0(qemuFDPass, 1); - - fdpass->prefix =3D g_strdup(prefix); - - return fdpass; -} - - /** * qemuFDPassAddFD: * @fdpass: The fd passing helper struct @@ -165,11 +121,6 @@ qemuFDPassAddFD(qemuFDPass *fdpass, newfd.opaque =3D g_strdup_printf("%s%s", fdpass->prefix, NULLSTR_EMPTY= (suffix)); - if (!fdpass->useFDSet) { - g_free(fdpass->path); - fdpass->path =3D g_strdup(newfd.opaque); - } - VIR_APPEND_ELEMENT(fdpass->fds, fdpass->nfds, newfd); } @@ -191,28 +142,15 @@ qemuFDPassTransferCommand(qemuFDPass *fdpass, if (!fdpass) return 0; - if (qemuFDPassValidate(fdpass) < 0) - return -1; - for (i =3D 0; i < fdpass->nfds; i++) { - virCommandPassFD(cmd, fdpass->fds[i].fd, VIR_COMMAND_PASS_FD_CLOSE= _PARENT); - - if (fdpass->useFDSet) { - g_autofree char *arg =3D NULL; - - arg =3D g_strdup_printf("set=3D%u,fd=3D%d,opaque=3D%s", - fdpass->fdSetID, - fdpass->fds[i].fd, - fdpass->fds[i].opaque); - - virCommandAddArgList(cmd, "-add-fd", arg, NULL); - } else { - /* for monitor use the older FD passing needs the FD number */ - g_free(fdpass->path); - fdpass->path =3D g_strdup_printf("%d", fdpass->fds[i].fd); - } + g_autofree char *arg =3D g_strdup_printf("set=3D%u,fd=3D%d,opaque= =3D%s", + fdpass->fdSetID, + fdpass->fds[i].fd, + fdpass->fds[i].opaque); + virCommandPassFD(cmd, fdpass->fds[i].fd, VIR_COMMAND_PASS_FD_CLOSE= _PARENT); fdpass->fds[i].fd =3D -1; + virCommandAddArgList(cmd, "-add-fd", arg, NULL); } return 0; @@ -231,42 +169,30 @@ int qemuFDPassTransferMonitor(qemuFDPass *fdpass, qemuMonitor *mon) { + g_autoptr(qemuMonitorFdsets) fdsets =3D NULL; size_t i; if (!fdpass) return 0; - if (qemuFDPassValidate(fdpass) < 0) + if (qemuMonitorQueryFdsets(mon, &fdsets) < 0) return -1; - if (fdpass->useFDSet) { - g_autoptr(qemuMonitorFdsets) fdsets =3D NULL; - if (qemuMonitorQueryFdsets(mon, &fdsets) < 0) + for (i =3D 0; i < fdsets->nfdsets; i++) { + if (fdsets->fdsets[i].id =3D=3D fdpass->fdSetID) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("fdset '%u' is already in use by qemu"), + fdpass->fdSetID); return -1; - - for (i =3D 0; i < fdsets->nfdsets; i++) { - if (fdsets->fdsets[i].id =3D=3D fdpass->fdSetID) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("fdset '%u' is already in use by qemu"), - fdpass->fdSetID); - return -1; - } } } for (i =3D 0; i < fdpass->nfds; i++) { - if (fdpass->useFDSet) { - if (qemuMonitorAddFileHandleToSet(mon, - fdpass->fds[i].fd, - fdpass->fdSetID, - fdpass->fds[i].opaque) < 0) - return -1; - } else { - if (qemuMonitorSendFileHandle(mon, - fdpass->fds[i].opaque, - fdpass->fds[i].fd) < 0) - return -1; - } + if (qemuMonitorAddFileHandleToSet(mon, + fdpass->fds[i].fd, + fdpass->fdSetID, + fdpass->fds[i].opaque) < 0) + return -1; VIR_FORCE_CLOSE(fdpass->fds[i].fd); fdpass->passed =3D true; @@ -290,11 +216,7 @@ qemuFDPassTransferMonitorRollback(qemuFDPass *fdpass, if (!fdpass || !fdpass->passed) return; - if (fdpass->useFDSet) { - ignore_value(qemuMonitorRemoveFdset(mon, fdpass->fdSetID)); - } else { - ignore_value(qemuMonitorCloseFileHandle(mon, fdpass->fds[0].opaque= )); - } + ignore_value(qemuMonitorRemoveFdset(mon, fdpass->fdSetID)); } --=20 2.35.3