All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] io_uring: make sqpoll wakeup possible with getevents
@ 2019-09-12 16:08 Jens Axboe
  2019-09-12 20:15 ` Jeff Moyer
  0 siblings, 1 reply; 2+ messages in thread
From: Jens Axboe @ 2019-09-12 16:08 UTC (permalink / raw)
  To: linux-block; +Cc: Lewis Baker

The way the logic is setup in io_uring_enter() means that you can't wake
up the SQ poller thread while at the same time waiting (or polling) for
completions afterwards. There's no reason for that to be the case.

Reported-by: Lewis Baker <lbaker@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

--

diff --git a/fs/io_uring.c b/fs/io_uring.c
index 4bc3ee4ea81f..3c8859d417eb 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -3356,15 +3356,12 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
 	 * Just return the requested submit count, and wake the thread if
 	 * we were asked to.
 	 */
+	ret = 0;
 	if (ctx->flags & IORING_SETUP_SQPOLL) {
 		if (flags & IORING_ENTER_SQ_WAKEUP)
 			wake_up(&ctx->sqo_wait);
 		submitted = to_submit;
-		goto out_ctx;
-	}
-
-	ret = 0;
-	if (to_submit) {
+	} else if (to_submit) {
 		bool block_for_last = false;
 
 		to_submit = min(to_submit, ctx->sq_entries);
@@ -3394,7 +3391,6 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
 		}
 	}
 
-out_ctx:
 	io_ring_drop_ctx_refs(ctx, 1);
 out_fput:
 	fdput(f);

-- 
Jens Axboe


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

* Re: [PATCH] io_uring: make sqpoll wakeup possible with getevents
  2019-09-12 16:08 [PATCH] io_uring: make sqpoll wakeup possible with getevents Jens Axboe
@ 2019-09-12 20:15 ` Jeff Moyer
  0 siblings, 0 replies; 2+ messages in thread
From: Jeff Moyer @ 2019-09-12 20:15 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-block, Lewis Baker

Jens Axboe <axboe@kernel.dk> writes:

> The way the logic is setup in io_uring_enter() means that you can't wake
> up the SQ poller thread while at the same time waiting (or polling) for
> completions afterwards. There's no reason for that to be the case.
>
> Reported-by: Lewis Baker <lbaker@fb.com>
> Signed-off-by: Jens Axboe <axboe@kernel.dk>

Reviewed-by: Jeff Moyer <jmoyer@redhat.com>

>
> --
>
> diff --git a/fs/io_uring.c b/fs/io_uring.c
> index 4bc3ee4ea81f..3c8859d417eb 100644
> --- a/fs/io_uring.c
> +++ b/fs/io_uring.c
> @@ -3356,15 +3356,12 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
>  	 * Just return the requested submit count, and wake the thread if
>  	 * we were asked to.
>  	 */
> +	ret = 0;
>  	if (ctx->flags & IORING_SETUP_SQPOLL) {
>  		if (flags & IORING_ENTER_SQ_WAKEUP)
>  			wake_up(&ctx->sqo_wait);
>  		submitted = to_submit;
> -		goto out_ctx;
> -	}
> -
> -	ret = 0;
> -	if (to_submit) {
> +	} else if (to_submit) {
>  		bool block_for_last = false;
>  
>  		to_submit = min(to_submit, ctx->sq_entries);
> @@ -3394,7 +3391,6 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
>  		}
>  	}
>  
> -out_ctx:
>  	io_ring_drop_ctx_refs(ctx, 1);
>  out_fput:
>  	fdput(f);

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

end of thread, other threads:[~2019-09-12 20:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-12 16:08 [PATCH] io_uring: make sqpoll wakeup possible with getevents Jens Axboe
2019-09-12 20:15 ` Jeff Moyer

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.