public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCH 5.19 0/3] 5.19 reverts
@ 2022-06-14 16:51 Pavel Begunkov
  2022-06-14 16:51 ` [PATCH 5.19 1/3] Revert "io_uring: support CQE32 for nop operation" Pavel Begunkov
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Pavel Begunkov @ 2022-06-14 16:51 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, asml.silence

We've got a couple of nops debugging features, which don't belong to
upstream, and IORING_CLOSE_FD_AND_FILE_SLOT nobody knows how to use
reliably and with a couple of unsolved problems.

All came in 5.19, let's revert them.

Pavel Begunkov (3):
  Revert "io_uring: support CQE32 for nop operation"
  Revert "io_uring: add buffer selection support to IORING_OP_NOP"
  io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT

 fs/io_uring.c                 | 46 +++--------------------------------
 include/uapi/linux/io_uring.h |  6 -----
 2 files changed, 4 insertions(+), 48 deletions(-)

-- 
2.36.1



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 5.19 1/3] Revert "io_uring: support CQE32 for nop operation"
  2022-06-14 16:51 [PATCH 5.19 0/3] 5.19 reverts Pavel Begunkov
@ 2022-06-14 16:51 ` Pavel Begunkov
  2022-06-14 16:51 ` [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP" Pavel Begunkov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Pavel Begunkov @ 2022-06-14 16:51 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, asml.silence

This reverts commit 2bb04df7c2af9dad5d28771c723bc39b01cf7df4.

CQE32 nops were used for debugging and benchmarking but it doesn't
target any real use case. Revert it, we can return it back if someone
finds a good way to use it.

Signed-off-by: Pavel Begunkov <[email protected]>
---
 fs/io_uring.c | 21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

diff --git a/fs/io_uring.c b/fs/io_uring.c
index ca6170a66e62..bf556f77d4ab 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -784,12 +784,6 @@ struct io_msg {
 	u32 len;
 };
 
-struct io_nop {
-	struct file			*file;
-	u64				extra1;
-	u64				extra2;
-};
-
 struct io_async_connect {
 	struct sockaddr_storage		address;
 };
@@ -994,7 +988,6 @@ struct io_kiocb {
 		struct io_msg		msg;
 		struct io_xattr		xattr;
 		struct io_socket	sock;
-		struct io_nop		nop;
 		struct io_uring_cmd	uring_cmd;
 	};
 
@@ -5268,14 +5261,6 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags)
 
 static int io_nop_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 {
-	/*
-	 * If the ring is setup with CQE32, relay back addr/addr
-	 */
-	if (req->ctx->flags & IORING_SETUP_CQE32) {
-		req->nop.extra1 = READ_ONCE(sqe->addr);
-		req->nop.extra2 = READ_ONCE(sqe->addr2);
-	}
-
 	return 0;
 }
 
@@ -5296,11 +5281,7 @@ static int io_nop(struct io_kiocb *req, unsigned int issue_flags)
 	}
 
 	cflags = io_put_kbuf(req, issue_flags);
-	if (!(req->ctx->flags & IORING_SETUP_CQE32))
-		__io_req_complete(req, issue_flags, 0, cflags);
-	else
-		__io_req_complete32(req, issue_flags, 0, cflags,
-				    req->nop.extra1, req->nop.extra2);
+	__io_req_complete(req, issue_flags, 0, cflags);
 	return 0;
 }
 
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP"
  2022-06-14 16:51 [PATCH 5.19 0/3] 5.19 reverts Pavel Begunkov
  2022-06-14 16:51 ` [PATCH 5.19 1/3] Revert "io_uring: support CQE32 for nop operation" Pavel Begunkov
@ 2022-06-14 16:51 ` Pavel Begunkov
  2022-06-14 18:21   ` Dylan Yudaken
  2022-06-14 16:51 ` [PATCH 5.19 3/3] io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT Pavel Begunkov
  2022-06-14 17:02 ` [PATCH 5.19 0/3] 5.19 reverts Jens Axboe
  3 siblings, 1 reply; 7+ messages in thread
From: Pavel Begunkov @ 2022-06-14 16:51 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, asml.silence

This reverts commit 3d200242a6c968af321913b635fc4014b238cba4.

Buffer selection with nops was used for debugging and benchmarking but
is useless in real life. Let's revert it before it's released.

Signed-off-by: Pavel Begunkov <[email protected]>
---
 fs/io_uring.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/fs/io_uring.c b/fs/io_uring.c
index bf556f77d4ab..1b95c6750a81 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -1114,7 +1114,6 @@ static const struct io_op_def io_op_defs[] = {
 	[IORING_OP_NOP] = {
 		.audit_skip		= 1,
 		.iopoll			= 1,
-		.buffer_select		= 1,
 	},
 	[IORING_OP_READV] = {
 		.needs_file		= 1,
@@ -5269,19 +5268,7 @@ static int io_nop_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
  */
 static int io_nop(struct io_kiocb *req, unsigned int issue_flags)
 {
-	unsigned int cflags;
-	void __user *buf;
-
-	if (req->flags & REQ_F_BUFFER_SELECT) {
-		size_t len = 1;
-
-		buf = io_buffer_select(req, &len, issue_flags);
-		if (!buf)
-			return -ENOBUFS;
-	}
-
-	cflags = io_put_kbuf(req, issue_flags);
-	__io_req_complete(req, issue_flags, 0, cflags);
+	__io_req_complete(req, issue_flags, 0, 0);
 	return 0;
 }
 
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5.19 3/3] io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT
  2022-06-14 16:51 [PATCH 5.19 0/3] 5.19 reverts Pavel Begunkov
  2022-06-14 16:51 ` [PATCH 5.19 1/3] Revert "io_uring: support CQE32 for nop operation" Pavel Begunkov
  2022-06-14 16:51 ` [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP" Pavel Begunkov
@ 2022-06-14 16:51 ` Pavel Begunkov
  2022-06-14 17:02 ` [PATCH 5.19 0/3] 5.19 reverts Jens Axboe
  3 siblings, 0 replies; 7+ messages in thread
From: Pavel Begunkov @ 2022-06-14 16:51 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, asml.silence

This partially reverts a7c41b4687f5902af70cd559806990930c8a307b

Even though IORING_CLOSE_FD_AND_FILE_SLOT might save cycles for some
users, but it tries to do two things at a time and it's not clear how to
handle errors and what to return in a single result field when one part
fails and another completes well. Kill it for now.

Signed-off-by: Pavel Begunkov <[email protected]>
---
 fs/io_uring.c                 | 12 +++---------
 include/uapi/linux/io_uring.h |  6 ------
 2 files changed, 3 insertions(+), 15 deletions(-)

diff --git a/fs/io_uring.c b/fs/io_uring.c
index 1b95c6750a81..1b0b6099e717 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -576,7 +576,6 @@ struct io_close {
 	struct file			*file;
 	int				fd;
 	u32				file_slot;
-	u32				flags;
 };
 
 struct io_timeout_data {
@@ -5966,18 +5965,14 @@ static int io_statx(struct io_kiocb *req, unsigned int issue_flags)
 
 static int io_close_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 {
-	if (sqe->off || sqe->addr || sqe->len || sqe->buf_index)
+	if (sqe->off || sqe->addr || sqe->len || sqe->rw_flags || sqe->buf_index)
 		return -EINVAL;
 	if (req->flags & REQ_F_FIXED_FILE)
 		return -EBADF;
 
 	req->close.fd = READ_ONCE(sqe->fd);
 	req->close.file_slot = READ_ONCE(sqe->file_index);
-	req->close.flags = READ_ONCE(sqe->close_flags);
-	if (req->close.flags & ~IORING_CLOSE_FD_AND_FILE_SLOT)
-		return -EINVAL;
-	if (!(req->close.flags & IORING_CLOSE_FD_AND_FILE_SLOT) &&
-	    req->close.file_slot && req->close.fd)
+	if (req->close.file_slot && req->close.fd)
 		return -EINVAL;
 
 	return 0;
@@ -5993,8 +5988,7 @@ static int io_close(struct io_kiocb *req, unsigned int issue_flags)
 
 	if (req->close.file_slot) {
 		ret = io_close_fixed(req, issue_flags);
-		if (ret || !(req->close.flags & IORING_CLOSE_FD_AND_FILE_SLOT))
-			goto err;
+		goto err;
 	}
 
 	spin_lock(&files->file_lock);
diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h
index 776e0278f9dd..53e7dae92e42 100644
--- a/include/uapi/linux/io_uring.h
+++ b/include/uapi/linux/io_uring.h
@@ -47,7 +47,6 @@ struct io_uring_sqe {
 		__u32		unlink_flags;
 		__u32		hardlink_flags;
 		__u32		xattr_flags;
-		__u32		close_flags;
 	};
 	__u64	user_data;	/* data to be passed back at completion time */
 	/* pack this to avoid bogus arm OABI complaints */
@@ -259,11 +258,6 @@ enum io_uring_op {
  */
 #define IORING_ACCEPT_MULTISHOT	(1U << 0)
 
-/*
- * close flags, store in sqe->close_flags
- */
-#define IORING_CLOSE_FD_AND_FILE_SLOT	(1U << 0)
-
 /*
  * IO completion data structure (Completion Queue Entry)
  */
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 5.19 0/3] 5.19 reverts
  2022-06-14 16:51 [PATCH 5.19 0/3] 5.19 reverts Pavel Begunkov
                   ` (2 preceding siblings ...)
  2022-06-14 16:51 ` [PATCH 5.19 3/3] io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT Pavel Begunkov
@ 2022-06-14 17:02 ` Jens Axboe
  3 siblings, 0 replies; 7+ messages in thread
From: Jens Axboe @ 2022-06-14 17:02 UTC (permalink / raw)
  To: io-uring, asml.silence

On Tue, 14 Jun 2022 17:51:15 +0100, Pavel Begunkov wrote:
> We've got a couple of nops debugging features, which don't belong to
> upstream, and IORING_CLOSE_FD_AND_FILE_SLOT nobody knows how to use
> reliably and with a couple of unsolved problems.
> 
> All came in 5.19, let's revert them.
> 
> Pavel Begunkov (3):
>   Revert "io_uring: support CQE32 for nop operation"
>   Revert "io_uring: add buffer selection support to IORING_OP_NOP"
>   io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT
> 
> [...]

Applied, thanks!

[1/3] Revert "io_uring: support CQE32 for nop operation"
      commit: 8899ce4b2f7364a90e3b9cf332dfd9993c61f46c
[2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP"
      commit: aa165d6d2bb55f8b1bb5047fd634311681316fa2
[3/3] io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT
      commit: d884b6498d2f022098502e106d5a45ab635f2e9a

Best regards,
-- 
Jens Axboe




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP"
  2022-06-14 16:51 ` [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP" Pavel Begunkov
@ 2022-06-14 18:21   ` Dylan Yudaken
  2022-06-14 18:26     ` Jens Axboe
  0 siblings, 1 reply; 7+ messages in thread
From: Dylan Yudaken @ 2022-06-14 18:21 UTC (permalink / raw)
  To: [email protected], [email protected]; +Cc: [email protected]

On Tue, 2022-06-14 at 17:51 +0100, Pavel Begunkov wrote:
> This reverts commit 3d200242a6c968af321913b635fc4014b238cba4.
> 
> Buffer selection with nops was used for debugging and benchmarking
> but
> is useless in real life. Let's revert it before it's released.
> 
> Signed-off-by: Pavel Begunkov <[email protected]>
> ---
>  fs/io_uring.c | 15 +--------------
>  1 file changed, 1 insertion(+), 14 deletions(-)
> 
> diff --git a/fs/io_uring.c b/fs/io_uring.c
> index bf556f77d4ab..1b95c6750a81 100644
> --- a/fs/io_uring.c
> +++ b/fs/io_uring.c
> @@ -1114,7 +1114,6 @@ static const struct io_op_def io_op_defs[] = {
>         [IORING_OP_NOP] = {
>                 .audit_skip             = 1,
>                 .iopoll                 = 1,
> -               .buffer_select          = 1,
>         },
>         [IORING_OP_READV] = {
>                 .needs_file             = 1,
> @@ -5269,19 +5268,7 @@ static int io_nop_prep(struct io_kiocb *req,
> const struct io_uring_sqe *sqe)
>   */
>  static int io_nop(struct io_kiocb *req, unsigned int issue_flags)
>  {
> -       unsigned int cflags;
> -       void __user *buf;
> -
> -       if (req->flags & REQ_F_BUFFER_SELECT) {
> -               size_t len = 1;
> -
> -               buf = io_buffer_select(req, &len, issue_flags);
> -               if (!buf)
> -                       return -ENOBUFS;
> -       }
> -
> -       cflags = io_put_kbuf(req, issue_flags);
> -       __io_req_complete(req, issue_flags, 0, cflags);
> +       __io_req_complete(req, issue_flags, 0, 0);
>         return 0;
>  }
>  

The liburing test case I added in "buf-ring: add tests that cycle
through the provided buffer ring" relies on this.

I don't mind either way if this is kept or that liburing patch is
reverted, but it should be consistent. What do you think?



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP"
  2022-06-14 18:21   ` Dylan Yudaken
@ 2022-06-14 18:26     ` Jens Axboe
  0 siblings, 0 replies; 7+ messages in thread
From: Jens Axboe @ 2022-06-14 18:26 UTC (permalink / raw)
  To: Dylan Yudaken, Pavel Begunkov, io-uring

On 6/14/22 12:21 PM, Dylan Yudaken wrote: 
> The liburing test case I added in "buf-ring: add tests that cycle
> through the provided buffer ring" relies on this.

Good point.

> I don't mind either way if this is kept or that liburing patch is
> reverted, but it should be consistent. What do you think?

It was useful for benchmarking as well, but it'd be a trivial patch to
do for targeted testing.

I'm fine with killing it, but can also be persuaded not to ;-)

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-06-14 18:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-14 16:51 [PATCH 5.19 0/3] 5.19 reverts Pavel Begunkov
2022-06-14 16:51 ` [PATCH 5.19 1/3] Revert "io_uring: support CQE32 for nop operation" Pavel Begunkov
2022-06-14 16:51 ` [PATCH 5.19 2/3] Revert "io_uring: add buffer selection support to IORING_OP_NOP" Pavel Begunkov
2022-06-14 18:21   ` Dylan Yudaken
2022-06-14 18:26     ` Jens Axboe
2022-06-14 16:51 ` [PATCH 5.19 3/3] io_uring: remove IORING_CLOSE_FD_AND_FILE_SLOT Pavel Begunkov
2022-06-14 17:02 ` [PATCH 5.19 0/3] 5.19 reverts Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox