Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5666797rwl; Tue, 11 Apr 2023 08:25:00 -0700 (PDT) X-Google-Smtp-Source: AKy350YTr4vBR1uVsrMvGk0LqA0wQ0a+fvknRj51PSDidLldaGZt4Lj37QyxdrsJaIwmG/DrXM8e X-Received: by 2002:a17:90b:4a49:b0:246:aa73:309e with SMTP id lb9-20020a17090b4a4900b00246aa73309emr9285492pjb.42.1681226700669; Tue, 11 Apr 2023 08:25:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681226700; cv=none; d=google.com; s=arc-20160816; b=zxr2f6YTwfXjUlb0+0FWB3VDCHfToevSAfSCRpaWyYBD6KTvdDMJVI3XHy8rRrMfDt WmjLlqpDI11ciOtU+T7hQrdIHR1TkxakAwiWkLl1Db0jUd1nyKL+S2dbLqNL6gdszl+Q d02zYz8Vb0886B0uqhUtT0drlPknovZ4cN2FpZEo+0pYP0725FMytpPmlEKCFrtqv4z6 XiMBsiOn3u5YeM/B2/1/xQbDVzCmGmAEdWhjKlhGull+alsdaIw9Z/eJcOEa8raiNGW6 z+Q5ZL3hKsuWHoyl/TA8oTT9hb/aXxrN01hKCJa6IIFodGd3qwfsWhXPN+cpsp3sK1R8 V9RQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=EKa9vfhk8fWfVEyyFRSYlQGodtOxRM3cBgC7nPc2RUw=; b=vWCImILWYeasScTxLpH5b1EQgnAeLCZfHCHwPvCjbooQsKiKgYdc3u1uBiq/FGIpDN EZWsMJH17QDKYYAqNxSOI72V+9x8ZlPmQKFTStvF4AZqUbSx6Fp2APmBzvSIIKFNiBUc hOnSSuLtLTQTz6YBIO7GQnakAlOYocs5Ikd1Hx8IH7QvRNBacgSSIQYmbsSmlDIMI08N FxD2UdYQbeexJvkx/0Bm4B6B8JdpDbFcWwZwThgvUWpzznu2arSChFheyuA6NfWbeArq RKlj+tVV8XSkDxGs5c4puJSLmz2t68Ir+AWzD09Ksmc0YQPYk1PO8TmjvCt1/TeWH8ZQ JPtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20210112.gappssmtp.com header.s=20210112 header.b=0wa2bOqa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d17-20020a170902b71100b001a500cb53bbsi12781534pls.426.2023.04.11.08.24.47; Tue, 11 Apr 2023 08:25:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20210112.gappssmtp.com header.s=20210112 header.b=0wa2bOqa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230473AbjDKPT3 (ORCPT + 99 others); Tue, 11 Apr 2023 11:19:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230456AbjDKPTO (ORCPT ); Tue, 11 Apr 2023 11:19:14 -0400 Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E1265FCA for ; Tue, 11 Apr 2023 08:18:51 -0700 (PDT) Received: by mail-io1-xd29.google.com with SMTP id ca18e2360f4ac-7603c5af4a9so7076639f.0 for ; Tue, 11 Apr 2023 08:18:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1681226275; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=EKa9vfhk8fWfVEyyFRSYlQGodtOxRM3cBgC7nPc2RUw=; b=0wa2bOqaU+MMRmMY52v0O1jnHzxBGA60OdAJeGWlzzPGGR9oN4Acfx8NJMjzQe8F/M ou21tMDCsa1i1pEt481881+H/O6S5KsnhIUfSXPH6kxnk3lPjg6XrwzbMehzS4eAUtai csP+DrgYpgTrntay5AE+YW0PSAw50GKLATwO7PluUS0rxGZs2npLjcPPNoPilYiZe3XF enziKtkF4hOa8DMd6wPtlV4Wf8WF+69kU/ebhkUn4P5rVBxafFztysDJKDVWTEhOeCEC 7mumjYFYaaG2+g3MMmTE/Bi3w/nb3p6pK2AVj0gY6iDvUbaFonWfjgDbIQVJVlB90BGn XjtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681226275; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EKa9vfhk8fWfVEyyFRSYlQGodtOxRM3cBgC7nPc2RUw=; b=IC5cfcIV+I+EhtwDVDpUAqSPD4oj8swmBkKxsI/RUjs8qM0/z0ULzVw4EyhnYWiMO4 mg68JmFhb4ntW7sRIFWMureqkdA1SP+bLrYKMypmSvTqXMtzihJcQpaY8AYIaEJnCrrI 80ME9txHlI6ZVuBZApsjLNDPKR5DMMPUyAJkmbNQ3M2PwAHvUcEG37oGgMoGzzE6DowO HOz7n/F2OxQ9KkZNa4po2J15lexoMsIR3bQZ6m/vpoDwNNdlaEKQMCL9rizIxIwcPOLl HaL4ahD2oWLwjdiO/kzqeO40HN0MJh6FpFob/K/lJiAMrIppDD0qca/TwKO2CGCwpEGA 5PeA== X-Gm-Message-State: AAQBX9fZSIMIrGSJcrcnConb2opr4llbIf9AFStzWBP0sbNBdtRQKuJ4 dNydhKFAJ6aUmcRaqpiCR0wiDg== X-Received: by 2002:a05:6602:2b91:b0:75c:f48c:2075 with SMTP id r17-20020a0566022b9100b0075cf48c2075mr7019947iov.2.1681226275104; Tue, 11 Apr 2023 08:17:55 -0700 (PDT) Received: from [192.168.1.94] ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id z27-20020a056638215b00b003acde48bdc3sm3940376jaj.111.2023.04.11.08.17.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Apr 2023 08:17:54 -0700 (PDT) Message-ID: Date: Tue, 11 Apr 2023 09:17:52 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH 0/5] add initial io_uring_cmd support for sockets Content-Language: en-US To: David Ahern , Breno Leitao Cc: Willem de Bruijn , io-uring@vger.kernel.org, netdev@vger.kernel.org, kuba@kernel.org, asml.silence@gmail.com, leit@fb.com, edumazet@google.com, pabeni@redhat.com, davem@davemloft.net, dccp@vger.kernel.org, mptcp@lists.linux.dev, linux-kernel@vger.kernel.org, willemdebruijn.kernel@gmail.com, matthieu.baerts@tessares.net, marcelo.leitner@gmail.com References: <20230406144330.1932798-1-leitao@debian.org> <75e3c434-eb8b-66e5-5768-ca0f906979a1@kernel.org> <67831406-8d2f-feff-f56b-d0f002a95d96@kernel.dk> From: Jens Axboe In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 4/11/23 9:10?AM, David Ahern wrote: > On 4/11/23 8:41 AM, Jens Axboe wrote: >> On 4/11/23 8:36?AM, David Ahern wrote: >>> On 4/11/23 6:00 AM, Breno Leitao wrote: >>>> I am not sure if avoiding io_uring details in network code is possible. >>>> >>>> The "struct proto"->uring_cmd callback implementation (tcp_uring_cmd() >>>> in the TCP case) could be somewhere else, such as in the io_uring/ >>>> directory, but, I think it might be cleaner if these implementations are >>>> closer to function assignment (in the network subsystem). >>>> >>>> And this function (tcp_uring_cmd() for instance) is the one that I am >>>> planning to map io_uring CMDs to ioctls. Such as SOCKET_URING_OP_SIOCINQ >>>> -> SIOCINQ. >>>> >>>> Please let me know if you have any other idea in mind. >>> >>> I am not convinced that this io_uring_cmd is needed. This is one >>> in-kernel subsystem calling into another, and there are APIs for that. >>> All of this set is ioctl based and as Willem noted a little refactoring >>> separates the get_user/put_user out so that in-kernel can call can be >>> made with existing ops. >> >> How do you want to wire it up then? We can't use fops->unlocked_ioctl() >> obviously, and we already have ->uring_cmd() for this purpose. >> >> I do think the right thing to do is have a common helper that returns >> whatever value you want (or sets it), and split the ioctl parts into a >> wrapper around that that simply copies in/out as needed. Then >> ->uring_cmd() could call that, or you could some exported function that >> does supports that. >> >> This works for the basic cases, though I do suspect we'll want to go >> down the ->uring_cmd() at some point for more advanced cases or cases >> that cannot sanely be done in an ioctl fashion. >> > > My meta point is that there are uapis today to return this information > to applications (and I suspect this is just the start of more networking > changes - both data retrieval and adjusting settings). io_uring is > wanting to do this on behalf of the application without a syscall. That > makes io_uring yet another subsystem / component managing a socket. Any > change to the networking stack required by io_uring should be usable by > all other in-kernel socket owners or managers. ie., there is no reason > for io_uring specific code here. I think we are in violent agreement here, what I'm describing is exactly that - it'd make ioctl/{set,get}sockopt call into the same helpers that ->uring_cmd() would, with the only difference being that the former would need copy in/out and the latter would not. But let me just stress that for direct descriptors, we cannot currently call ioctl or set/getsockopt. This means we have to instantiate a regular descriptor first, do those things, then register it to never use the regular file descriptor again. That's wasteful, and this is what we want to enable (direct use of ioctl set/getsockopt WITHOUT a normal file descriptor). It's not just for "oh it'd be handy to also do this from io_uring" even if that would be a worthwhile goal in itself. -- Jens Axboe