public inbox for [email protected]
 help / color / mirror / Atom feed
* [GIT PULL] io_uring changes for 6.13-rc1
@ 2024-11-18 14:22 Jens Axboe
  2024-11-18 22:06 ` Sasha Levin
  2024-11-19  1:10 ` pr-tracker-bot
  0 siblings, 2 replies; 6+ messages in thread
From: Jens Axboe @ 2024-11-18 14:22 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: io-uring

Hi Linus,

Here are the io_uring changes slated for the 6.13 kernel release. This
pull request contains:

- Cleanups of the eventfd handling code, making it fully private.

- Support for sending a sync message to another ring, without having a
  ring available to send a normal async message.

- Get rid of the separate unlocked hash table, unify everything around
  the single locked one.

- Add support for ring resizing. It can be hard to appropriately size
  the CQ ring upfront, if the application doesn't know how busy it will
  be. This results in applications sizing rings for the most busy case,
  which can be wasteful. With ring resizing, they can start small and
  grow the ring, if needed.

- Add support for fixed wait regions, rather than needing to copy the
  same wait data tons of times for each wait operation.

- Rewrite the resource node handling, which before was serialized per
  ring. This caused issues with particularly fixed files, where one file
  waiting on IO could hold up putting and freeing of other unrelated
  files. Now each node is handled separately. New code is much simpler
  too, and was a net 250 line reduction in code.

- Add support for just doing partial buffer clones, rather than always
  cloning the entire buffer table.

- Series adding static NAPI support, where a specific NAPI instance is
  used rather than having a list of them available that need lookup.

- Add support for mapped regions, and also convert the fixed wait
  support mentioned above to that concept. This avoids doing special
  mappings for various planned features, and folds the existing
  registered wait into that too.

- Add support for hybrid IO polling, which is a variant of strict IOPOLL
  but with an initial sleep delay to avoid spinning too early and
  wasting resources on devices that aren't necessarily in the < 5 usec
  category wrt latencies.

- Various cleanups and little fixes.

Please pull!


The following changes since commit 42f7652d3eb527d03665b09edac47f85fb600924:

  Linux 6.12-rc4 (2024-10-20 15:19:38 -0700)

are available in the Git repository at:

  git://git.kernel.dk/linux.git tags/for-6.13/io_uring-20241118

for you to fetch changes up to a652958888fb1ada3e4f6b548576c2d2c1b60d66:

  io_uring/region: fix error codes after failed vmap (2024-11-17 09:01:35 -0700)

----------------------------------------------------------------
for-6.13/io_uring-20241118

----------------------------------------------------------------
Al Viro (1):
      switch io_msg_ring() to CLASS(fd)

Jens Axboe (50):
      io_uring/eventfd: abstract out ev_fd put helper
      io_uring/eventfd: check for the need to async notifier earlier
      io_uring/eventfd: move actual signaling part into separate helper
      io_uring/eventfd: move trigger check into a helper
      io_uring/eventfd: abstract out ev_fd grab + release helpers
      io_uring/eventfd: move ctx->evfd_last_cq_tail into io_ev_fd
      io_uring/msg_ring: refactor a few helper functions
      io_uring/msg_ring: add support for sending a sync message
      io_uring/poll: remove 'ctx' argument from io_poll_req_delete()
      io_uring/poll: get rid of unlocked cancel hash
      io_uring/poll: get rid of io_poll_tw_hash_eject()
      io_uring/poll: get rid of per-hashtable bucket locks
      io_uring/cancel: get rid of init_hash_table() helper
      io_uring: move cancel hash tables to kvmalloc/kvfree
      io_uring/rsrc: don't assign bvec twice in io_import_fixed()
      io_uring/uring_cmd: get rid of using req->imu
      io_uring/rw: get rid of using req->imu
      io_uring: remove 'issue_flags' argument for io_req_set_rsrc_node()
      io_uring/net: move send zc fixed buffer import to issue path
      io_uring: kill 'imu' from struct io_kiocb
      io_uring: move max entry definition and ring sizing into header
      io_uring: abstract out a bit of the ring filling logic
      io_uring/memmap: explicitly return -EFAULT for mmap on NULL rings
      io_uring/register: add IORING_REGISTER_RESIZE_RINGS
      io_uring/sqpoll: wait on sqd->wait for thread parking
      io_uring: switch struct ext_arg from __kernel_timespec to timespec64
      io_uring: change io_get_ext_arg() to use uaccess begin + end
      io_uring: add support for fixed wait regions
      io_uring/nop: add support for testing registered files and buffers
      io_uring/rsrc: move struct io_fixed_file to rsrc.h header
      io_uring: specify freeptr usage for SLAB_TYPESAFE_BY_RCU io_kiocb cache
      io_uring/splice: open code 2nd direct file assignment
      io_uring/rsrc: kill io_charge_rsrc_node()
      io_uring/rsrc: get rid of per-ring io_rsrc_node list
      io_uring/rsrc: get rid of io_rsrc_node allocation cache
      io_uring/rsrc: add an empty io_rsrc_node for sparse buffer entries
      io_uring: only initialize io_kiocb rsrc_nodes when needed
      io_uring/rsrc: unify file and buffer resource tables
      io_uring/rsrc: add io_rsrc_node_lookup() helper
      io_uring/filetable: remove io_file_from_index() helper
      io_uring/filetable: kill io_reset_alloc_hint() helper
      io_uring/rsrc: add io_reset_rsrc_node() helper
      io_uring/rsrc: get rid of the empty node and dummy_ubuf
      io_uring/rsrc: allow cloning at an offset
      io_uring/rsrc: allow cloning with node replacements
      io_uring/rsrc: encode node type and ctx together
      io_uring/rsrc: split io_kiocb node type assignments
      io_uring: move cancelations to be io_uring_task based
      io_uring: remove task ref helpers
      io_uring: move struct io_kiocb from task_struct to io_uring_task

Ming Lei (4):
      io_uring/rsrc: pass 'struct io_ring_ctx' reference to rsrc helpers
      io_uring/rsrc: remove '->ctx_ptr' of 'struct io_rsrc_node'
      io_uring/rsrc: add & apply io_req_assign_buf_node()
      io_uring/uring_cmd: fix buffer index retrieval

Olivier Langlois (6):
      io_uring/napi: protect concurrent io_napi_entry timeout accesses
      io_uring/napi: fix io_napi_entry RCU accesses
      io_uring/napi: improve __io_napi_add
      io_uring/napi: Use lock guards
      io_uring/napi: clean up __io_napi_do_busy_loop
      io_uring/napi: add static napi tracking strategy

Pavel Begunkov (17):
      io_uring: kill io_llist_xchg
      io_uring: static_key for !IORING_SETUP_NO_SQARRAY
      io_uring: clean up cqe trace points
      io_uring/net: split send and sendmsg prep helpers
      io_uring/net: don't store send address ptr
      io_uring/net: don't alias send user pointer reads
      io_uring/net: clean up io_msg_copy_hdr
      io_uring: prevent speculating sq_array indexing
      io_uring: avoid normal tw intermediate fallback
      io_uring: fix invalid hybrid polling ctx leaks
      io_uring: fortify io_pin_pages with a warning
      io_uring: disable ENTER_EXT_ARG_REG for IOPOLL
      io_uring: temporarily disable registered waits
      io_uring: introduce concept of memory regions
      io_uring: add memory region registration
      io_uring: restore back registered wait arguments
      io_uring/region: fix error codes after failed vmap

hexue (1):
      io_uring: add support for hybrid IOPOLL

 include/linux/io_uring/cmd.h    |   2 +-
 include/linux/io_uring_types.h  |  88 ++++--
 include/trace/events/io_uring.h |  24 +-
 include/uapi/linux/io_uring.h   | 119 +++++++-
 io_uring/cancel.c               |  20 +-
 io_uring/cancel.h               |   1 -
 io_uring/eventfd.c              | 137 ++++++---
 io_uring/fdinfo.c               |  88 ++++--
 io_uring/filetable.c            |  71 ++---
 io_uring/filetable.h            |  35 +--
 io_uring/futex.c                |   4 +-
 io_uring/futex.h                |   4 +-
 io_uring/io_uring.c             | 433 ++++++++++++++------------
 io_uring/io_uring.h             |  30 +-
 io_uring/memmap.c               |  83 +++++
 io_uring/memmap.h               |  14 +
 io_uring/msg_ring.c             |  91 ++++--
 io_uring/msg_ring.h             |   1 +
 io_uring/napi.c                 | 184 +++++++----
 io_uring/napi.h                 |   8 +-
 io_uring/net.c                  | 112 ++++---
 io_uring/nop.c                  |  47 ++-
 io_uring/notif.c                |   7 +-
 io_uring/opdef.c                |   2 +
 io_uring/poll.c                 | 181 +++--------
 io_uring/poll.h                 |   2 +-
 io_uring/register.c             | 299 +++++++++++++++++-
 io_uring/rsrc.c                 | 657 +++++++++++++++-------------------------
 io_uring/rsrc.h                 |  97 +++---
 io_uring/rw.c                   | 105 +++++--
 io_uring/splice.c               |  42 ++-
 io_uring/splice.h               |   1 +
 io_uring/sqpoll.c               |   3 +-
 io_uring/tctx.c                 |   1 +
 io_uring/timeout.c              |  16 +-
 io_uring/timeout.h              |   2 +-
 io_uring/uring_cmd.c            |  27 +-
 io_uring/uring_cmd.h            |   2 +-
 io_uring/waitid.c               |   6 +-
 io_uring/waitid.h               |   2 +-
 40 files changed, 1825 insertions(+), 1223 deletions(-)

-- 
Jens Axboe


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

* Re: [GIT PULL] io_uring changes for 6.13-rc1
  2024-11-18 14:22 [GIT PULL] io_uring changes for 6.13-rc1 Jens Axboe
@ 2024-11-18 22:06 ` Sasha Levin
  2024-11-18 22:24   ` Sasha Levin
  2024-11-18 23:27   ` Jens Axboe
  2024-11-19  1:10 ` pr-tracker-bot
  1 sibling, 2 replies; 6+ messages in thread
From: Sasha Levin @ 2024-11-18 22:06 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Linus Torvalds, io-uring, tglx

Hi Jens, Thomas,

On Mon, Nov 18, 2024 at 07:22:59AM -0700, Jens Axboe wrote:
>hexue (1):
>      io_uring: add support for hybrid IOPOLL

After merging of this pull request into linus-next, I've started seeing
build errors:

/builds/linux/io_uring/rw.c: In function 'io_hybrid_iopoll_delay':
/builds/linux/io_uring/rw.c:1179:2: error: implicit declaration of function 'hrtimer_init_sleeper_on_stack'; did you mean 'hrtimer_setup_sleeper_on_stack'? [-Werror=implicit-function-declaration]
   hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   hrtimer_setup_sleeper_on_stack

This is because 01ee194d1aba ("io_uring: add support for hybrid IOPOLL")
adds a call to hrtimer_init_sleeper_on_stack() which was removed earlier
today in Thomas's PR[1], specifically in commit f3bef7aaa6c8
("hrtimers: Delete hrtimer_init_sleeper_on_stack()").


[1] https://lore.kernel.org/all/173195758632.1896928.11371209657780930206.tglx@xen13/

-- 
Thanks,
Sasha

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

* Re: [GIT PULL] io_uring changes for 6.13-rc1
  2024-11-18 22:06 ` Sasha Levin
@ 2024-11-18 22:24   ` Sasha Levin
  2024-11-18 23:27   ` Jens Axboe
  1 sibling, 0 replies; 6+ messages in thread
From: Sasha Levin @ 2024-11-18 22:24 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Linus Torvalds, io-uring, tglx

On Mon, Nov 18, 2024 at 05:06:46PM -0500, Sasha Levin wrote:
>Hi Jens, Thomas,
>
>On Mon, Nov 18, 2024 at 07:22:59AM -0700, Jens Axboe wrote:
>>hexue (1):
>>     io_uring: add support for hybrid IOPOLL
>
>After merging of this pull request into linus-next, I've started seeing
>build errors:
>
>/builds/linux/io_uring/rw.c: In function 'io_hybrid_iopoll_delay':
>/builds/linux/io_uring/rw.c:1179:2: error: implicit declaration of function 'hrtimer_init_sleeper_on_stack'; did you mean 'hrtimer_setup_sleeper_on_stack'? [-Werror=implicit-function-declaration]
>  hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode);
>  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  hrtimer_setup_sleeper_on_stack
>
>This is because 01ee194d1aba ("io_uring: add support for hybrid IOPOLL")
>adds a call to hrtimer_init_sleeper_on_stack() which was removed earlier
>today in Thomas's PR[1], specifically in commit f3bef7aaa6c8
>("hrtimers: Delete hrtimer_init_sleeper_on_stack()").

Linus,

Looks like this is a simple
s/hrtimer_init_sleeper_on_stack/hrtimer_setup_sleeper_on_stack , so this
issue could be addressed by replacing the new call with
hrtimer_setup_sleeper_on_stack() either in the io_uring or the
timers/core merge, whichever you pull last.

-- 
Thanks,
Sasha

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

* Re: [GIT PULL] io_uring changes for 6.13-rc1
  2024-11-18 22:06 ` Sasha Levin
  2024-11-18 22:24   ` Sasha Levin
@ 2024-11-18 23:27   ` Jens Axboe
  2024-11-18 23:28     ` Jens Axboe
  1 sibling, 1 reply; 6+ messages in thread
From: Jens Axboe @ 2024-11-18 23:27 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Linus Torvalds, io-uring, tglx

On 11/18/24 3:06 PM, Sasha Levin wrote:
> Hi Jens, Thomas,
> 
> On Mon, Nov 18, 2024 at 07:22:59AM -0700, Jens Axboe wrote:
>> hexue (1):
>>      io_uring: add support for hybrid IOPOLL
> 
> After merging of this pull request into linus-next, I've started seeing
> build errors:
> 
> /builds/linux/io_uring/rw.c: In function 'io_hybrid_iopoll_delay':
> /builds/linux/io_uring/rw.c:1179:2: error: implicit declaration of function 'hrtimer_init_sleeper_on_stack'; did you mean 'hrtimer_setup_sleeper_on_stack'? [-Werror=implicit-function-declaration]
>   hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode);
>   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   hrtimer_setup_sleeper_on_stack
> 
> This is because 01ee194d1aba ("io_uring: add support for hybrid IOPOLL")
> adds a call to hrtimer_init_sleeper_on_stack() which was removed earlier
> today in Thomas's PR[1], specifically in commit f3bef7aaa6c8
> ("hrtimers: Delete hrtimer_init_sleeper_on_stack()").

Right, forgot to mention that. linux-next has been carrying a fixup for
that which I was going to link, but it's not on a public list for some
reason. In any case, it's trivial to fixup, just change

hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode);

to

hrtimer_setup_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode);

in io_uring/rw.c while merging either of the two trees that go in last.

FWIW, this kind of change should be done before -rc1 rather than be
queued up earlier. That's usually the best way to do these things and
avoid -next or merge window breakage. I'm guessing this tree isn't the
only one going to get hit by that.

-- 
Jens Axboe

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

* Re: [GIT PULL] io_uring changes for 6.13-rc1
  2024-11-18 23:27   ` Jens Axboe
@ 2024-11-18 23:28     ` Jens Axboe
  0 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2024-11-18 23:28 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Linus Torvalds, io-uring, tglx

On 11/18/24 4:27 PM, Jens Axboe wrote:
> On 11/18/24 3:06 PM, Sasha Levin wrote:
>> Hi Jens, Thomas,
>>
>> On Mon, Nov 18, 2024 at 07:22:59AM -0700, Jens Axboe wrote:
>>> hexue (1):
>>>      io_uring: add support for hybrid IOPOLL
>>
>> After merging of this pull request into linus-next, I've started seeing
>> build errors:
>>
>> /builds/linux/io_uring/rw.c: In function 'io_hybrid_iopoll_delay':
>> /builds/linux/io_uring/rw.c:1179:2: error: implicit declaration of function 'hrtimer_init_sleeper_on_stack'; did you mean 'hrtimer_setup_sleeper_on_stack'? [-Werror=implicit-function-declaration]
>>   hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode);
>>   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>   hrtimer_setup_sleeper_on_stack
>>
>> This is because 01ee194d1aba ("io_uring: add support for hybrid IOPOLL")
>> adds a call to hrtimer_init_sleeper_on_stack() which was removed earlier
>> today in Thomas's PR[1], specifically in commit f3bef7aaa6c8
>> ("hrtimers: Delete hrtimer_init_sleeper_on_stack()").
> 
> Right, forgot to mention that. linux-next has been carrying a fixup for
> that which I was going to link, but it's not on a public list for some
> reason.

My bad, it is on lkml:

https://lore.kernel.org/lkml/[email protected]/

-- 
Jens Axboe


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

* Re: [GIT PULL] io_uring changes for 6.13-rc1
  2024-11-18 14:22 [GIT PULL] io_uring changes for 6.13-rc1 Jens Axboe
  2024-11-18 22:06 ` Sasha Levin
@ 2024-11-19  1:10 ` pr-tracker-bot
  1 sibling, 0 replies; 6+ messages in thread
From: pr-tracker-bot @ 2024-11-19  1:10 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Linus Torvalds, io-uring

The pull request you sent on Mon, 18 Nov 2024 07:22:59 -0700:

> git://git.kernel.dk/linux.git tags/for-6.13/io_uring-20241118

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/8350142a4b4cedebfa76cd4cc6e5a7ba6a330629

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

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

end of thread, other threads:[~2024-11-19  1:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-18 14:22 [GIT PULL] io_uring changes for 6.13-rc1 Jens Axboe
2024-11-18 22:06 ` Sasha Levin
2024-11-18 22:24   ` Sasha Levin
2024-11-18 23:27   ` Jens Axboe
2024-11-18 23:28     ` Jens Axboe
2024-11-19  1:10 ` pr-tracker-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox