Pull more io_uring updates from Jens Axboe: "Set of fixes/updates for io_uring that should go into this release. The ublk bits could've gone via either tree - usually I put them in block, but they got a bit mixed this series with the zero-copy supported that ended up dipping into both trees. This contains: - Fix for sendmsg zc, include in pinned pages accounting like we do for the other zc types - Series for ublk fixing request aborting, doing various little cleanups, fixing some zc issues, and adding queue_rqs support - Another ublk series doing some code cleanups - Series cleaning up the io_uring send path, mostly in preparation for registered buffers - Series doing little MSG_RING cleanups - Fix for the newly added zc rx, fixing len being 0 for the last invocation of the callback - Add vectored registered buffer support for ublk. With that, then ublk also supports this feature in the kernel revision where it could generically introduced for rw/net - A bunch of selftest additions for ublk. This is the majority of the diffstat - Silence a KCSAN data race warning for io-wq - Various little cleanups and fixes" * tag 'io_uring-6.15-20250403' of git://git.kernel.dk/linux: (44 commits) io_uring: always do atomic put from iowq selftests: ublk: enable zero copy for stripe target io_uring: support vectored kernel fixed buffer block: add for_each_mp_bvec() io_uring: add validate_fixed_range() for validate fixed buffer selftests: ublk: kublk: fix an error log line selftests: ublk: kublk: use ioctl-encoded opcodes io_uring/zcrx: return early from io_zcrx_recv_skb if readlen is 0 io_uring/net: avoid import_ubuf for regvec send io_uring/rsrc: check size when importing reg buffer io_uring: cleanup {g,s]etsockopt sqe reading io_uring: hide caches sqes from drivers io_uring: make zcrx depend on CONFIG_IO_URING io_uring: add req flag invariant build assertion Documentation: ublk: remove dead footnote selftests: ublk: specify io_cmd_buf pointer type ublk: specify io_cmd_buf pointer type io_uring: don't pass ctx to tw add remote helper io_uring/msg: initialise msg request opcode io_uring/msg: rename io_double_lock_ctx() ...
Showing the changes to include/uapi/linux (1 of 30 files). Show all
Unified · Split
| @@ -410,6 +410,29 @@ struct ublk_param_dma_align { · 409 unmodified lines | |||
| 410 | __u8 pad[4]; | 410 | __u8 pad[4]; |
| 411 | }; | 411 | }; |
| 412 | 412 | ||
| 413 | #define UBLK_MIN_SEGMENT_SIZE 4096 | ||
| 414 | /* | ||
| 415 | * If any one of the three segment parameter is set as 0, the behavior is | ||
| 416 | * undefined. | ||
| 417 | */ | ||
| 418 | struct ublk_param_segment { | ||
| 419 | /* | ||
| 420 | * seg_boundary_mask + 1 needs to be power_of_2(), and the sum has | ||
| 421 | * to be >= UBLK_MIN_SEGMENT_SIZE(4096) | ||
| 422 | */ | ||
| 423 | __u64 seg_boundary_mask; | ||
| 424 | |||
| 425 | /* | ||
| 426 | * max_segment_size could be override by virt_boundary_mask, so be | ||
| 427 | * careful when setting both. | ||
| 428 | * | ||
| 429 | * max_segment_size has to be >= UBLK_MIN_SEGMENT_SIZE(4096) | ||
| 430 | */ | ||
| 431 | __u32 max_segment_size; | ||
| 432 | __u16 max_segments; | ||
| 433 | __u8 pad[2]; | ||
| 434 | }; | ||
| 435 | |||
| 413 | struct ublk_params { | 436 | struct ublk_params { |
| 414 | /* | 437 | /* |
| 415 | * Total length of parameters, userspace has to set 'len' for both | 438 | * Total length of parameters, userspace has to set 'len' for both |
| @@ -423,6 +446,7 @@ struct ublk_params { · 7 unmodified lines | |||
| 423 | #define UBLK_PARAM_TYPE_DEVT (1 << 2) | 446 | #define UBLK_PARAM_TYPE_DEVT (1 << 2) |
| 424 | #define UBLK_PARAM_TYPE_ZONED (1 << 3) | 447 | #define UBLK_PARAM_TYPE_ZONED (1 << 3) |
| 425 | #define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4) | 448 | #define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4) |
| 449 | #define UBLK_PARAM_TYPE_SEGMENT (1 << 5) | ||
| 426 | __u32 types; /* types of parameter included */ | 450 | __u32 types; /* types of parameter included */ |
| 427 | 451 | ||
| 428 | struct ublk_param_basic basic; | 452 | struct ublk_param_basic basic; |
| @@ -430,6 +454,7 @@ struct ublk_params { · 1 unmodified line | |||
| 430 | struct ublk_param_devt devt; | 454 | struct ublk_param_devt devt; |
| 431 | struct ublk_param_zoned zoned; | 455 | struct ublk_param_zoned zoned; |
| 432 | struct ublk_param_dma_align dma; | 456 | struct ublk_param_dma_align dma; |
| 457 | struct ublk_param_segment seg; | ||
| 433 | }; | 458 | }; |
| 434 | 459 | ||
| 435 | #endif | 460 | #endif |