From: Kanchan Joshi <joshi.k@samsung.com>
To: dccp@vger.kernel.org
Subject: Re: [RFC PATCH v2 1/4] net: wire up support for file_operations->uring_cmd()
Date: Mon, 19 Jun 2023 14:18:35 +0000 [thread overview]
Message-ID: <20230619140635.GA4046@green245> (raw)
In-Reply-To: <20230614110757.3689731-2-leitao@debian.org>
[-- Attachment #1: Type: text/plain, Size: 3015 bytes --]
On Mon, Jun 19, 2023 at 10:28:30AM +0100, Pavel Begunkov wrote:
>On 6/14/23 16:15, David Ahern wrote:
>>On 6/14/23 5:07 AM, Breno Leitao wrote:
>>>diff --git a/include/linux/net.h b/include/linux/net.h
>>>index 8defc8f1d82e..58dea87077af 100644
>>>--- a/include/linux/net.h
>>>+++ b/include/linux/net.h
>>>@@ -182,6 +182,8 @@ struct proto_ops {
>>> int (*compat_ioctl) (struct socket *sock, unsigned int cmd,
>>> unsigned long arg);
>>> #endif
>>>+ int (*uring_cmd)(struct socket *sock, struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags);
>>> int (*gettstamp) (struct socket *sock, void __user *userstamp,
>>> bool timeval, bool time32);
>>> int (*listen) (struct socket *sock, int len);
>>>diff --git a/include/net/sock.h b/include/net/sock.h
>>>index 62a1b99da349..a49b8b19292b 100644
>>>--- a/include/net/sock.h
>>>+++ b/include/net/sock.h
>>>@@ -111,6 +111,7 @@ typedef struct {
>>> struct sock;
>>> struct proto;
>>> struct net;
>>>+struct io_uring_cmd;
>>> typedef __u32 __bitwise __portpair;
>>> typedef __u64 __bitwise __addrpair;
>>>@@ -1259,6 +1260,9 @@ struct proto {
>>> int (*ioctl)(struct sock *sk, int cmd,
>>> int *karg);
>>>+ int (*uring_cmd)(struct sock *sk,
>>>+ struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags);
>>> int (*init)(struct sock *sk);
>>> void (*destroy)(struct sock *sk);
>>> void (*shutdown)(struct sock *sk, int how);
>>>@@ -1934,6 +1938,8 @@ int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
>>> int flags);
>>> int sock_common_setsockopt(struct socket *sock, int level, int optname,
>>> sockptr_t optval, unsigned int optlen);
>>>+int sock_common_uring_cmd(struct socket *sock, struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags);
>>> void sk_common_release(struct sock *sk);
>>>diff --git a/net/core/sock.c b/net/core/sock.c
>>>index 1df7e432fec5..339fa74db60f 100644
>>>--- a/net/core/sock.c
>>>+++ b/net/core/sock.c
>>>@@ -3668,6 +3668,18 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
>>> }
>>> EXPORT_SYMBOL(sock_common_setsockopt);
>>>+int sock_common_uring_cmd(struct socket *sock, struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags)
>>>+{
>>>+ struct sock *sk = sock->sk;
>>>+
>>>+ if (!sk->sk_prot || !sk->sk_prot->uring_cmd)
>>>+ return -EOPNOTSUPP;
>>>+
>>>+ return sk->sk_prot->uring_cmd(sk, cmd, issue_flags);
>>>+}
>>>+EXPORT_SYMBOL(sock_common_uring_cmd);
>>>+
>>
>>
>>io_uring is just another in-kernel user of sockets. There is no reason
>>for io_uring references to be in core net code. It should be using
>>exposed in-kernel APIs and doing any translation of its op codes in
>>io_uring/ code.
>
>That callback is all about file dependent operations, just like ioctl.
>And as the patch in question is doing socket specific stuff, I think
>architecturally it fits well.
I also feel that it fits well.
Other users of uring-cmd (nvme, ublk) follow the same model.
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Kanchan Joshi <joshi.k@samsung.com>
To: Pavel Begunkov <asml.silence@gmail.com>
Cc: David Ahern <dsahern@kernel.org>,
Breno Leitao <leitao@debian.org>,
io-uring@vger.kernel.org, axboe@kernel.dk, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
Matthieu Baerts <matthieu.baerts@tessares.net>,
Mat Martineau <martineau@kernel.org>,
Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
Xin Long <lucien.xin@gmail.com>,
leit@fb.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, dccp@vger.kernel.org,
mptcp@lists.linux.dev, linux-sctp@vger.kernel.org,
ast@kernel.org, kuniyu@amazon.com, martin.lau@kernel.org,
Jason Xing <kernelxing@tencent.com>,
Joanne Koong <joannelkoong@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
Willem de Bruijn <willemb@google.com>,
Guillaume Nault <gnault@redhat.com>,
Andrea Righi <andrea.righi@canonical.com>
Subject: Re: [RFC PATCH v2 1/4] net: wire up support for file_operations->uring_cmd()
Date: Mon, 19 Jun 2023 19:36:35 +0530 [thread overview]
Message-ID: <20230619140635.GA4046@green245> (raw)
In-Reply-To: <d9c9bd5f-b17e-fbd8-5646-4f51b927cc6b@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3015 bytes --]
On Mon, Jun 19, 2023 at 10:28:30AM +0100, Pavel Begunkov wrote:
>On 6/14/23 16:15, David Ahern wrote:
>>On 6/14/23 5:07 AM, Breno Leitao wrote:
>>>diff --git a/include/linux/net.h b/include/linux/net.h
>>>index 8defc8f1d82e..58dea87077af 100644
>>>--- a/include/linux/net.h
>>>+++ b/include/linux/net.h
>>>@@ -182,6 +182,8 @@ struct proto_ops {
>>> int (*compat_ioctl) (struct socket *sock, unsigned int cmd,
>>> unsigned long arg);
>>> #endif
>>>+ int (*uring_cmd)(struct socket *sock, struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags);
>>> int (*gettstamp) (struct socket *sock, void __user *userstamp,
>>> bool timeval, bool time32);
>>> int (*listen) (struct socket *sock, int len);
>>>diff --git a/include/net/sock.h b/include/net/sock.h
>>>index 62a1b99da349..a49b8b19292b 100644
>>>--- a/include/net/sock.h
>>>+++ b/include/net/sock.h
>>>@@ -111,6 +111,7 @@ typedef struct {
>>> struct sock;
>>> struct proto;
>>> struct net;
>>>+struct io_uring_cmd;
>>> typedef __u32 __bitwise __portpair;
>>> typedef __u64 __bitwise __addrpair;
>>>@@ -1259,6 +1260,9 @@ struct proto {
>>> int (*ioctl)(struct sock *sk, int cmd,
>>> int *karg);
>>>+ int (*uring_cmd)(struct sock *sk,
>>>+ struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags);
>>> int (*init)(struct sock *sk);
>>> void (*destroy)(struct sock *sk);
>>> void (*shutdown)(struct sock *sk, int how);
>>>@@ -1934,6 +1938,8 @@ int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
>>> int flags);
>>> int sock_common_setsockopt(struct socket *sock, int level, int optname,
>>> sockptr_t optval, unsigned int optlen);
>>>+int sock_common_uring_cmd(struct socket *sock, struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags);
>>> void sk_common_release(struct sock *sk);
>>>diff --git a/net/core/sock.c b/net/core/sock.c
>>>index 1df7e432fec5..339fa74db60f 100644
>>>--- a/net/core/sock.c
>>>+++ b/net/core/sock.c
>>>@@ -3668,6 +3668,18 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
>>> }
>>> EXPORT_SYMBOL(sock_common_setsockopt);
>>>+int sock_common_uring_cmd(struct socket *sock, struct io_uring_cmd *cmd,
>>>+ unsigned int issue_flags)
>>>+{
>>>+ struct sock *sk = sock->sk;
>>>+
>>>+ if (!sk->sk_prot || !sk->sk_prot->uring_cmd)
>>>+ return -EOPNOTSUPP;
>>>+
>>>+ return sk->sk_prot->uring_cmd(sk, cmd, issue_flags);
>>>+}
>>>+EXPORT_SYMBOL(sock_common_uring_cmd);
>>>+
>>
>>
>>io_uring is just another in-kernel user of sockets. There is no reason
>>for io_uring references to be in core net code. It should be using
>>exposed in-kernel APIs and doing any translation of its op codes in
>>io_uring/ code.
>
>That callback is all about file dependent operations, just like ioctl.
>And as the patch in question is doing socket specific stuff, I think
>architecturally it fits well.
I also feel that it fits well.
Other users of uring-cmd (nvme, ublk) follow the same model.
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2023-06-19 14:18 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-14 11:07 [RFC PATCH v2 0/4] add initial io_uring_cmd support for sockets Breno Leitao
2023-06-14 11:07 ` Breno Leitao
2023-06-14 11:07 ` [RFC PATCH v2 1/4] net: wire up support for file_operations->uring_cmd() Breno Leitao
2023-06-14 11:07 ` Breno Leitao
2023-06-14 15:15 ` David Ahern
2023-06-14 15:15 ` David Ahern
2023-06-19 9:28 ` Pavel Begunkov
2023-06-19 9:28 ` Pavel Begunkov
2023-06-19 14:06 ` Kanchan Joshi [this message]
2023-06-19 14:18 ` Kanchan Joshi
2023-06-19 11:20 ` Breno Leitao
2023-06-19 11:20 ` Breno Leitao
2023-06-19 16:12 ` David Ahern
2023-06-19 16:12 ` David Ahern
2023-06-20 2:09 ` David Ahern
2023-06-20 2:09 ` David Ahern
2023-06-23 10:17 ` Stefan Metzmacher
2023-06-23 10:17 ` Stefan Metzmacher
2023-06-23 15:20 ` David Ahern
2023-06-23 15:20 ` David Ahern
-- strict thread matches above, loose matches on Subject: below --
2023-06-14 11:07 [RFC PATCH v2 2/4] net: add uring_cmd callback to UDP Breno Leitao
2023-06-14 11:07 ` Breno Leitao
2023-06-14 11:07 [RFC PATCH v2 3/4] net: add uring_cmd callback to TCP Breno Leitao
2023-06-14 11:07 ` Breno Leitao
2023-06-14 11:07 [RFC PATCH v2 4/4] net: add uring_cmd callback to raw "protocol" Breno Leitao
2023-06-14 11:07 ` Breno Leitao
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=20230619140635.GA4046@green245 \
--to=joshi.k@samsung.com \
--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.