diff mbox series

io_uring: keep multishot request NAPI timeout fresh

Message ID 0fe61a019ec61e5708cd117cb42ed0dab95e1617.1722294646.git.olivier@trillion01.com (mailing list archive)
State New
Headers show
Series io_uring: keep multishot request NAPI timeout fresh | expand

Commit Message

Olivier Langlois July 29, 2024, 11:03 p.m. UTC
this refresh statement was originally present in the original patch:
https://lore.kernel.org/netdev/20221121191437.996297-2-shr@devkernel.io/

it has been removed with no explanation in v6:
https://lore.kernel.org/netdev/20230201222254.744422-2-shr@devkernel.io/

it is important to make the refresh for multishot request because if no
new requests using the same NAPI device are added to the ring, the entry
will become stall and be removed silently and the unsuspecting user will
not know that his ring made busy polling for only 60 seconds.

Signed-off-by: Olivier Langlois <olivier@trillion01.com>
---
 io_uring/poll.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Pavel Begunkov July 30, 2024, 11:08 a.m. UTC | #1
On 7/30/24 00:03, Olivier Langlois wrote:
> this refresh statement was originally present in the original patch:
> https://lore.kernel.org/netdev/20221121191437.996297-2-shr@devkernel.io/
> 
> it has been removed with no explanation in v6:
> https://lore.kernel.org/netdev/20230201222254.744422-2-shr@devkernel.io/
> 
> it is important to make the refresh for multishot request because if no
> new requests using the same NAPI device are added to the ring, the entry
> will become stall and be removed silently and the unsuspecting user will
> not know that his ring made busy polling for only 60 seconds.

we probably need a new update helper in the future, but good
enough for now.

Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>

Should also have:

Fixes: 8d0c12a80cdeb ("io-uring: add napi busy poll support")
Cc: stable@vger.kernel.org


> Signed-off-by: Olivier Langlois <olivier@trillion01.com>
> ---
>   io_uring/poll.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/io_uring/poll.c b/io_uring/poll.c
> index 0a8e02944689..1f63b60e85e7 100644
> --- a/io_uring/poll.c
> +++ b/io_uring/poll.c
> @@ -347,6 +347,7 @@ static int io_poll_check_events(struct io_kiocb *req, struct io_tw_state *ts)
>   		v &= IO_POLL_REF_MASK;
>   	} while (atomic_sub_return(v, &req->poll_refs) & IO_POLL_REF_MASK);
>   
> +	io_napi_add(req);
>   	return IOU_POLL_NO_ACTION;
>   }
>
Jens Axboe July 30, 2024, 12:20 p.m. UTC | #2
On Mon, 29 Jul 2024 19:03:33 -0400, Olivier Langlois wrote:
> this refresh statement was originally present in the original patch:
> https://lore.kernel.org/netdev/20221121191437.996297-2-shr@devkernel.io/
> 
> it has been removed with no explanation in v6:
> https://lore.kernel.org/netdev/20230201222254.744422-2-shr@devkernel.io/
> 
> it is important to make the refresh for multishot request because if no
> new requests using the same NAPI device are added to the ring, the entry
> will become stall and be removed silently and the unsuspecting user will
> not know that his ring made busy polling for only 60 seconds.
> 
> [...]

Applied, thanks!

[1/1] io_uring: keep multishot request NAPI timeout fresh
      commit: 2c762be5b798c443612c1bb9b011de4fdaebd1c5

Best regards,
diff mbox series

Patch

diff --git a/io_uring/poll.c b/io_uring/poll.c
index 0a8e02944689..1f63b60e85e7 100644
--- a/io_uring/poll.c
+++ b/io_uring/poll.c
@@ -347,6 +347,7 @@  static int io_poll_check_events(struct io_kiocb *req, struct io_tw_state *ts)
 		v &= IO_POLL_REF_MASK;
 	} while (atomic_sub_return(v, &req->poll_refs) & IO_POLL_REF_MASK);
 
+	io_napi_add(req);
 	return IOU_POLL_NO_ACTION;
 }