Commit Graph

10 Commits

Author SHA1 Message Date
Jeff Moyer 7803ca2813 io_uring: Add io_uring_setup flag to pre-register ring fd and never install it
JIRA: https://issues.redhat.com/browse/RHEL-12076

commit 6e76ac595855db27bbdaef337173294a6fd6eb2c
Author: Josh Triplett <josh@joshtriplett.org>
Date:   Sat Apr 29 01:40:30 2023 +0900

    io_uring: Add io_uring_setup flag to pre-register ring fd and never install it
    
    With IORING_REGISTER_USE_REGISTERED_RING, an application can register
    the ring fd and use it via registered index rather than installed fd.
    This allows using a registered ring for everything *except* the initial
    mmap.
    
    With IORING_SETUP_NO_MMAP, io_uring_setup uses buffers allocated by the
    user, rather than requiring a subsequent mmap.
    
    The combination of the two allows a user to operate *entirely* via a
    registered ring fd, making it unnecessary to ever install the fd in the
    first place. So, add a flag IORING_SETUP_REGISTERED_FD_ONLY to make
    io_uring_setup register the fd and return a registered index, without
    installing the fd.
    
    This allows an application to avoid touching the fd table at all, and
    allows a library to never even momentarily install a file descriptor.
    
    This splits out an io_ring_add_registered_file helper from
    io_ring_add_registered_fd, for use by io_uring_setup.
    
    Signed-off-by: Josh Triplett <josh@joshtriplett.org>
    Link: https://lore.kernel.org/r/bc8f431bada371c183b95a83399628b605e978a3.1682699803.git.josh@joshtriplett.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-11-02 15:31:53 -04:00
Jeff Moyer 08cbcde29a io_uring: rename 'in_idle' to 'in_cancel'
JIRA: https://issues.redhat.com/browse/RHEL-12076

commit 8d664282a03fec09682f10252d3c785c2513691d
Author: Jens Axboe <axboe@kernel.dk>
Date:   Fri Feb 17 08:27:23 2023 -0700

    io_uring: rename 'in_idle' to 'in_cancel'
    
    This better describes what it does - it's incremented when the task is
    currently undergoing a cancelation operation, due to exiting or exec'ing.
    
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-11-02 15:31:11 -04:00
Jeff Moyer e7394a6dac io_uring: remove io_register_submitter
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit 4add705e4eebbdd919741de0548d7029c8c92b68
Author: Dylan Yudaken <dylany@fb.com>
Date:   Mon Sep 26 10:09:27 2022 -0700

    io_uring: remove io_register_submitter
    
    this is no longer needed, as submitter_task is set at creation time.
    
    Signed-off-by: Dylan Yudaken <dylany@fb.com>
    Fixes: 97bbdc06a444 ("io_uring: add IORING_SETUP_SINGLE_ISSUER")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-05-05 15:24:06 -04:00
Jeff Moyer 9eebec651f io_uring: simplify __io_uring_add_tctx_node
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit 97c96e9fa36616d7890a6f3438172fc501927f01
Author: Dylan Yudaken <dylany@fb.com>
Date:   Mon Sep 26 10:09:26 2022 -0700

    io_uring: simplify __io_uring_add_tctx_node
    
    Remove submitter parameter from __io_uring_add_tctx_node.
    
    It was only called from one place, and we can do that logic in that one
    place.
    
    Signed-off-by: Dylan Yudaken <dylany@fb.com>
    Fixes: 97bbdc06a444 ("io_uring: add IORING_SETUP_SINGLE_ISSUER")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-05-05 15:24:05 -04:00
Jeff Moyer 848a6e305f io_uring: lockless task list
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit f88262e60bb9cb5740891672ce9f405e7f9393e5
Author: Dylan Yudaken <dylany@fb.com>
Date:   Wed Jun 22 06:40:23 2022 -0700

    io_uring: lockless task list
    
    With networking use cases we see contention on the spinlock used to
    protect the task_list when multiple threads try and add completions at once.
    Instead we can use a lockless list, and assume that the first caller to
    add to the list is responsible for kicking off task work.
    
    Signed-off-by: Dylan Yudaken <dylany@fb.com>
    Link: https://lore.kernel.org/r/20220622134028.2013417-4-dylany@fb.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-04-29 06:43:02 -04:00
Jeff Moyer 31c630fab4 io_uring: remove priority tw list optimisation
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit ed5ccb3beeba0cadb0fcf353ae192021dfecf252
Author: Dylan Yudaken <dylany@fb.com>
Date:   Wed Jun 22 06:40:21 2022 -0700

    io_uring: remove priority tw list optimisation
    
    This optimisation has some built in assumptions that make it easy to
    introduce bugs. It also does not have clear wins that make it worth keeping.
    
    Signed-off-by: Dylan Yudaken <dylany@fb.com>
    Link: https://lore.kernel.org/r/20220622134028.2013417-2-dylany@fb.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-04-29 06:41:02 -04:00
Jeff Moyer 8034d812f4 io_uring: kill extra io_uring_types.h includes
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit 27a9d66fec77cff0e32d2ecd5d0ac7ef878a7bb0
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Jun 16 13:57:18 2022 +0100

    io_uring: kill extra io_uring_types.h includes
    
    io_uring/io_uring.h already includes io_uring_types.h, no need to
    include it every time. Kill it in a bunch of places, it prepares us for
    following patches.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/94d8c943fbe0ef949981c508ddcee7fc1c18850f.1655384063.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-04-29 06:19:02 -04:00
Jeff Moyer 5d310513cd io_uring: add IORING_SETUP_SINGLE_ISSUER
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit 97bbdc06a4446bc69d8ba71d722abae542a6b70c
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Jun 16 10:22:08 2022 +0100

    io_uring: add IORING_SETUP_SINGLE_ISSUER
    
    Add a new IORING_SETUP_SINGLE_ISSUER flag and the userspace visible part
    of it, i.e. put limitations of submitters. Also, don't allow it together
    with IOPOLL as we're not going to put it to good use.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/4bcc41ee467fdf04c8aab8baf6ce3ba21858c3d4.1655371007.git.asml.silence@gmail.com
    Reviewed-by: Hao Xu <howeyxu@tencent.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-04-29 06:07:02 -04:00
Jeff Moyer 84a0d1c1f2 io_uring: inline ->registered_rings
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit 6a02e4be8187588ac476136496af9e3feeeb9a75
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Wed Jun 15 17:33:53 2022 +0100

    io_uring: inline ->registered_rings
    
    There can be only 16 registered rings, no need to allocate an array for
    them separately but store it in tctx.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/495f0b953c87994dd9e13de2134019054fa5830d.1655310733.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-04-29 05:51:02 -04:00
Jeff Moyer 6eeafa199e io_uring: move io_uring_task (tctx) helpers into its own file
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2068237

commit c9f06aa7de153cdbe424e7e38be39f2272cf78bc
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed May 25 11:01:04 2022 -0600

    io_uring: move io_uring_task (tctx) helpers into its own file
    
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
2023-04-29 05:33:02 -04:00