05 Nov, 2020

1 commit


17 Oct, 2020

6 commits

  • Make sure the async io-wq workers inherit the loginuid and sessionid from
    the original task, and restore them to unset once we're done with the
    async work item.

    While at it, disable the ability for kernel threads to write to their own
    loginuid.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Even though we place the req_issued and req_complete in separate
    cachelines, there's considerable overhead in doing the atomics
    particularly on the completion side.

    Get rid of having the two counters, and just use a percpu_counter for
    this. That's what it was made for, after all. This considerably
    reduces the overhead in __io_free_req().

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • This avoids doing a copy for each new async IO, if some parts of the
    io_identity has changed. We avoid reference counting for the normal
    fast path of nothing ever changing.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • This is, by definition, a per-task structure. So store it in the
    task context, instead of doing carrying it in each io_kiocb. We're being
    a bit inefficient if members have changed, as that requires an alloc and
    copy of a new io_identity struct. The next patch will fix that up.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • If the io_identity doesn't completely match the task, then create a
    copy of it and use that. The existing copy remains valid until the last
    user of it has gone away.

    This also changes the personality lookup to be indexed by io_identity,
    instead of creds directly.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • io-wq contains a pointer to the identity, which we just hold in io_kiocb
    for now. This is in preparation for putting this outside io_kiocb. The
    only exception is struct files_struct, which we'll need different rules
    for to avoid a circular dependency.

    No functional changes in this patch.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

01 Oct, 2020

2 commits

  • Now we have a io_uring kernel header, move this definition out of fs.h
    and into io_uring.h where it belongs.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Grab actual references to the files_struct. To avoid circular references
    issues due to this, we add a per-task note that keeps track of what
    io_uring contexts a task has used. When the tasks execs or exits its
    assigned files, we cancel requests based on this tracking.

    With that, we can grab proper references to the files table, and no
    longer need to rely on stashing away ring_fd and ring_file to check
    if the ring_fd may have been closed.

    Cc: stable@vger.kernel.org # v5.5+
    Reviewed-by: Pavel Begunkov
    Signed-off-by: Jens Axboe

    Jens Axboe