1. 06 Jul, 2020 1 commit
    • Pavel Begunkov's avatar
      io_uring: don't delay iopoll'ed req completion · 3aadc23e
      Pavel Begunkov authored
      ->iopoll() may have completed current request, but instead of reaping
      it, io_do_iopoll() just continues with the next request in the list.
      As a result it can leave just polled and completed request in the list
      up until next syscall. Even outer loop in io_iopoll_getevents() doesn't
      help the situation.
      
      E.g. poll_list: req0 -> req1
      If req0->iopoll() completed both requests, and @min<=1,
      then @req0 will be left behind.
      
      Check whether a req was completed after ->iopoll().
      Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      3aadc23e
  2. 05 Jul, 2020 6 commits
  3. 04 Jul, 2020 1 commit
    • Jens Axboe's avatar
      io_uring: fix regression with always ignoring signals in io_cqring_wait() · b7db41c9
      Jens Axboe authored
      When switching to TWA_SIGNAL for task_work notifications, we also made
      any signal based condition in io_cqring_wait() return -ERESTARTSYS.
      This breaks applications that rely on using signals to abort someone
      waiting for events.
      
      Check if we have a signal pending because of queued task_work, and
      repeat the signal check once we've run the task_work. This provides a
      reliable way of telling the two apart.
      
      Additionally, only use TWA_SIGNAL if we are using an eventfd. If not,
      we don't have the dependency situation described in the original commit,
      and we can get by with just using TWA_RESUME like we previously did.
      
      Fixes: ce593a6c ("io_uring: use signal based task_work running")
      Cc: stable@vger.kernel.org # v5.7
      Reported-by: default avatarAndres Freund <andres@anarazel.de>
      Tested-by: default avatarAndres Freund <andres@anarazel.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      b7db41c9
  4. 30 Jun, 2020 17 commits
  5. 29 Jun, 2020 1 commit
  6. 28 Jun, 2020 14 commits