All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: dccp@vger.kernel.org
Subject: Re: [PATCH 0/5] add initial io_uring_cmd support for sockets
Date: Tue, 11 Apr 2023 15:28:29 +0000	[thread overview]
Message-ID: <20cb4641-c765-e5ef-41cb-252be7721ce5@kernel.dk> (raw)
In-Reply-To: <20230406144330.1932798-1-leitao@debian.org>

On 4/11/23 9:24?AM, Willem de Bruijn wrote:
> Jens Axboe wrote:
>> On 4/11/23 9:00?AM, Willem de Bruijn wrote:
>>> Jens Axboe wrote:
>>>> On 4/11/23 8:51?AM, Willem de Bruijn wrote:
>>>>> 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.
>>>>>
>>>>> Does this suggestion not work?
>>>>
>>>> Not sure I follow, what suggestion?
>>>>
>>>
>>> This quote from earlier in the thread:
>>>
>>> I was thinking just having sock_uring_cmd call sock->ops->ioctl, like
>>> sock_do_ioctl.
>>
>> But that doesn't work, because sock->ops->ioctl() assumes the arg is
>> memory in userspace. Or do you mean change all of the sock->ops->ioctl()
>> to pass in on-stack memory (or similar) and have it work with a kernel
>> address?
> 
> That was what I suggested indeed.
> 
> It's about as much code change as this patch series. But it avoids
> the code duplication.

Breno, want to tackle that as a prep patch first? Should make the
functional changes afterwards much more straightforward, and will allow
support for anything really.

-- 
Jens Axboe

WARNING: multiple messages have this Message-ID (diff)
From: Jens Axboe <axboe@kernel.dk>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	David Ahern <dsahern@kernel.org>,
	Breno Leitao <leitao@debian.org>
Cc: Willem de Bruijn <willemb@google.com>,
	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, matthieu.baerts@tessares.net,
	marcelo.leitner@gmail.com
Subject: Re: [PATCH 0/5] add initial io_uring_cmd support for sockets
Date: Tue, 11 Apr 2023 09:28:29 -0600	[thread overview]
Message-ID: <20cb4641-c765-e5ef-41cb-252be7721ce5@kernel.dk> (raw)
In-Reply-To: <64357bb97fb19_114b22294c4@willemb.c.googlers.com.notmuch>

On 4/11/23 9:24?AM, Willem de Bruijn wrote:
> Jens Axboe wrote:
>> On 4/11/23 9:00?AM, Willem de Bruijn wrote:
>>> Jens Axboe wrote:
>>>> On 4/11/23 8:51?AM, Willem de Bruijn wrote:
>>>>> 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.
>>>>>
>>>>> Does this suggestion not work?
>>>>
>>>> Not sure I follow, what suggestion?
>>>>
>>>
>>> This quote from earlier in the thread:
>>>
>>> I was thinking just having sock_uring_cmd call sock->ops->ioctl, like
>>> sock_do_ioctl.
>>
>> But that doesn't work, because sock->ops->ioctl() assumes the arg is
>> memory in userspace. Or do you mean change all of the sock->ops->ioctl()
>> to pass in on-stack memory (or similar) and have it work with a kernel
>> address?
> 
> That was what I suggested indeed.
> 
> It's about as much code change as this patch series. But it avoids
> the code duplication.

Breno, want to tackle that as a prep patch first? Should make the
functional changes afterwards much more straightforward, and will allow
support for anything really.

-- 
Jens Axboe


  parent reply	other threads:[~2023-04-11 15:28 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-06 14:43 [PATCH 0/5] add initial io_uring_cmd support for sockets Breno Leitao
2023-04-06 14:43 ` Breno Leitao
2023-04-06 15:34 ` Willem de Bruijn
2023-04-06 15:34   ` Willem de Bruijn
2023-04-06 15:59 ` Breno Leitao
2023-04-06 15:59   ` Breno Leitao
2023-04-06 16:41 ` Keith Busch
2023-04-06 16:41   ` Keith Busch
2023-04-06 16:49 ` Jens Axboe
2023-04-06 16:49   ` Jens Axboe
2023-04-06 16:58 ` Breno Leitao
2023-04-06 16:58   ` Breno Leitao
2023-04-06 18:16 ` Willem de Bruijn
2023-04-06 18:16   ` Willem de Bruijn
2023-04-07  2:46 ` David Ahern
2023-04-07  2:46   ` David Ahern
2023-04-11 11:59 ` Breno Leitao
2023-04-11 12:00   ` Breno Leitao
2023-04-11 14:36 ` David Ahern
2023-04-11 14:36   ` David Ahern
2023-04-11 14:41 ` Jens Axboe
2023-04-11 14:41   ` Jens Axboe
2023-04-11 14:51 ` Willem de Bruijn
2023-04-11 14:51   ` Willem de Bruijn
2023-04-11 14:54 ` Jens Axboe
2023-04-11 14:54   ` Jens Axboe
2023-04-11 15:00 ` Willem de Bruijn
2023-04-11 15:00   ` Willem de Bruijn
2023-04-11 15:06 ` Jens Axboe
2023-04-11 15:06   ` Jens Axboe
2023-04-11 15:10 ` David Ahern
2023-04-11 15:10   ` David Ahern
2023-04-11 15:17 ` Jens Axboe
2023-04-11 15:17   ` Jens Axboe
2023-04-11 15:24 ` Willem de Bruijn
2023-04-11 15:24   ` Willem de Bruijn
2023-04-11 15:27 ` David Ahern
2023-04-11 15:27   ` David Ahern
2023-04-11 15:28 ` Jens Axboe [this message]
2023-04-11 15:28   ` Jens Axboe
2023-04-11 15:29 ` Jens Axboe
2023-04-11 15:29   ` Jens Axboe
2023-04-12  7:39 ` David Laight
2023-04-12  7:39   ` David Laight
2023-04-12 13:53 ` Breno Leitao
2023-04-12 13:53   ` Breno Leitao
2023-04-12 14:28 ` Willem de Bruijn
2023-04-12 14:28   ` Willem de Bruijn
2023-04-13  0:02 ` Breno Leitao
2023-04-13  0:02   ` Breno Leitao
2023-04-13 14:24 ` Willem de Bruijn
2023-04-13 14:24   ` Willem de Bruijn
2023-04-13 14:45 ` Jakub Kicinski
2023-04-13 14:45   ` Jakub Kicinski
2023-04-13 14:57 ` David Laight
2023-04-13 14:57   ` David Laight
2023-04-18 13:23 ` Breno Leitao
2023-04-18 13:23   ` Breno Leitao
2023-04-18 19:41 ` Willem de Bruijn
2023-04-18 19:41   ` Willem de Bruijn
2023-04-20 14:43 ` Breno Leitao
2023-04-20 14:43   ` Breno Leitao
2023-04-20 16:48 ` Willem de Bruijn
2023-04-20 16:48   ` Willem de Bruijn
2023-05-02  9:21 ` Adrien Delorme
2023-05-02  9:21   ` Adrien Delorme
2023-05-02 13:03 ` Pavel Begunkov
2023-05-02 13:03   ` Pavel Begunkov
2023-05-03 13:11 ` Adrien Delorme
2023-05-03 13:11   ` Adrien Delorme
2023-05-03 13:27 ` David Laight
2023-05-03 13:27   ` David Laight
  -- strict thread matches above, loose matches on Subject: below --
2023-04-06 14:43 [RFC PATCH 1/4] net: wire up support for file_operations->uring_cmd() Breno Leitao
2023-04-06 14:43 ` Breno Leitao
2023-04-06 14:43 [RFC PATCH 2/4] net: add uring_cmd callback to UDP Breno Leitao
2023-04-06 14:43 ` Breno Leitao
2023-04-06 19:03 ` kernel test robot
2023-04-11 12:54 ` Pavel Begunkov
2023-04-11 12:54   ` Pavel Begunkov
2023-04-06 14:43 [RFC PATCH 3/4] net: add uring_cmd callback to TCP Breno Leitao
2023-04-06 14:43 ` Breno Leitao
2023-04-06 20:35 ` kernel test robot
2023-04-06 14:43 [RFC PATCH 4/4] net: add uring_cmd callback to raw "protocol" Breno Leitao
2023-04-06 14:43 ` Breno Leitao
2023-04-06 16:57 [PATCH RFC] io_uring: Pass whole sqe to commands Breno Leitao
2023-04-06 16:57 ` Breno Leitao
2023-04-06 17:50 ` io_uring: Pass whole sqe to commands: Tests Results MPTCP CI
2023-04-07 18:51 ` [PATCH RFC] io_uring: Pass whole sqe to commands Keith Busch
2023-04-07 18:51   ` Keith Busch
2023-04-07 19:43 ` io_uring: Pass whole sqe to commands: Tests Results MPTCP CI
2023-04-11 12:22 ` [PATCH RFC] io_uring: Pass whole sqe to commands Breno Leitao
2023-04-11 12:22   ` Breno Leitao
2023-04-11 12:39 ` Pavel Begunkov
2023-04-11 12:39   ` Pavel Begunkov
2023-04-13  2:56 ` Ming Lei
2023-04-13  2:56   ` Ming Lei
2023-04-13 16:47 ` Breno Leitao
2023-04-13 16:47   ` Breno Leitao
2023-04-14  2:12 ` Ming Lei
2023-04-14  2:12   ` Ming Lei
2023-04-14 13:12 ` Pavel Begunkov
2023-04-14 13:12   ` Pavel Begunkov
2023-04-14 13:59 ` Ming Lei
2023-04-14 13:59   ` Ming Lei
2023-04-14 14:56 ` Pavel Begunkov
2023-04-14 14:56   ` Pavel Begunkov
2023-04-16  9:51 ` Ming Lei
2023-04-16  9:51   ` Ming Lei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20cb4641-c765-e5ef-41cb-252be7721ce5@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=dccp@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.