On 10/29/19 11:16 AM, Jackie Liu wrote: > We didn't use -ERESTARTSYS to tell the application layer to restart the > system call, but instead return -EINTR. we can set -EINTR directly when > wakeup by the signal, which can help us save an assignment operation and > comparison operation. > > Signed-off-by: Jackie Liu <liuyun01@xxxxxxxxxx> Looks good to me. Reviewed-by: Bob Liu <bob.liu@xxxxxxxxxx> > --- > fs/io_uring.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/fs/io_uring.c b/fs/io_uring.c > index a30c4f6..63eee7e 100644 > --- a/fs/io_uring.c > +++ b/fs/io_uring.c > @@ -2878,7 +2878,7 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, > .to_wait = min_events, > }; > struct io_rings *rings = ctx->rings; > - int ret; > + int ret = 0; > > if (io_cqring_events(rings) >= min_events) > return 0; > @@ -2896,7 +2896,6 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, > return ret; > } > > - ret = 0; > iowq.nr_timeouts = atomic_read(&ctx->cq_timeouts); > do { > prepare_to_wait_exclusive(&ctx->wait, &iowq.wq, > @@ -2905,15 +2904,13 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, > break; > schedule(); > if (signal_pending(current)) { > - ret = -ERESTARTSYS; > + ret = -EINTR; > break; > } > } while (1); > finish_wait(&ctx->wait, &iowq.wq); > > - restore_saved_sigmask_unless(ret == -ERESTARTSYS); > - if (ret == -ERESTARTSYS) > - ret = -EINTR; > + restore_saved_sigmask_unless(ret == -EINTR); > > return READ_ONCE(rings->cq.head) == READ_ONCE(rings->cq.tail) ? ret : 0; > } >