History

Merge tag 'io_uring-6.15-20250403' of git://git.kernel.dk/linux

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() ...

Linus Torvalds committed 1 year ago

Commit 7930edc2 parents c0dbd11 390513630 files · +673 −238Browse files

Showing the changes to include/uapi/linux (1 of 30 files). Show all

Unified · Split

include/uapi/linux/ublk_cmd.h+25−0
@@ -410,6 +410,29 @@ struct ublk_param_dma_align { · 409 unmodified lines
410410 __u8 pad[4];
411411 };
412412
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+
413436 struct ublk_params {
414437 /*
415438 * Total length of parameters, userspace has to set 'len' for both
@@ -423,6 +446,7 @@ struct ublk_params { · 7 unmodified lines
423446 #define UBLK_PARAM_TYPE_DEVT (1 << 2)
424447 #define UBLK_PARAM_TYPE_ZONED (1 << 3)
425448 #define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4)
449+#define UBLK_PARAM_TYPE_SEGMENT (1 << 5)
426450 __u32 types; /* types of parameter included */
427451
428452 struct ublk_param_basic basic;
@@ -430,6 +454,7 @@ struct ublk_params { · 1 unmodified line
430454 struct ublk_param_devt devt;
431455 struct ublk_param_zoned zoned;
432456 struct ublk_param_dma_align dma;
457+ struct ublk_param_segment seg;
433458 };
434459
435460 #endif