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 | 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 | 436 | struct ublk_params { |
| 414 | 437 | /* |
| 415 | 438 | * Total length of parameters, userspace has to set 'len' for both |
| @@ -423,6 +446,7 @@ struct ublk_params { · 7 unmodified lines | ||
| 423 | 446 | #define UBLK_PARAM_TYPE_DEVT (1 << 2) |
| 424 | 447 | #define UBLK_PARAM_TYPE_ZONED (1 << 3) |
| 425 | 448 | #define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4) |
| 449 | +#define UBLK_PARAM_TYPE_SEGMENT (1 << 5) | |
| 426 | 450 | __u32 types; /* types of parameter included */ |
| 427 | 451 | |
| 428 | 452 | struct ublk_param_basic basic; |
| @@ -430,6 +454,7 @@ struct ublk_params { · 1 unmodified line | ||
| 430 | 454 | struct ublk_param_devt devt; |
| 431 | 455 | struct ublk_param_zoned zoned; |
| 432 | 456 | struct ublk_param_dma_align dma; |
| 457 | + struct ublk_param_segment seg; | |
| 433 | 458 | }; |
| 434 | 459 | |
| 435 | 460 | #endif |