Pull passthrough updates from Jens Axboe: "With these changes, passthrough NVMe support over io_uring now performs at the same level as block device O_DIRECT, and in many cases 6-8% better. This contains: - Add support for fixed buffers for passthrough (Anuj, Kanchan) - Enable batched allocations and freeing on passthrough, similarly to what we support on the normal storage path (me) - Fix from Geert fixing an issue with !CONFIG_IO_URING" * tag 'for-6.1/passthrough-2022-10-04' of git://git.kernel.dk/linux: io_uring: Add missing inline to io_uring_cmd_import_fixed() dummy nvme: wire up fixed buffer support for nvme passthrough nvme: pass ubuffer as an integer block: extend functionality to map bvec iterator block: factor out blk_rq_map_bio_alloc helper block: rename bio_map_put to blk_mq_map_bio_put nvme: refactor nvme_alloc_request nvme: refactor nvme_add_user_metadata nvme: Use blk_rq_map_user_io helper scsi: Use blk_rq_map_user_io helper block: add blk_rq_map_user_io io_uring: introduce fixed buffer support for io_uring_cmd io_uring: add io_uring_cmd_import_fixed nvme: enable batched completions of passthrough IO nvme: split out metadata vs non metadata end_io uring_cmd completions block: allow end_io based requests in the completion batch handling block: change request end_io handler to pass back a return value block: enable batched allocation for blk_mq_alloc_request() block: kill deprecated BUG_ON() in the flush handling
Showing the changes to include/uapi/linux (1 of 18 files). Show all
Unified · Split
| @@ -56,6 +56,7 @@ struct io_uring_sqe { · 55 unmodified lines | |||
| 56 | __u32 hardlink_flags; | 56 | __u32 hardlink_flags; |
| 57 | __u32 xattr_flags; | 57 | __u32 xattr_flags; |
| 58 | __u32 msg_ring_flags; | 58 | __u32 msg_ring_flags; |
| 59 | __u32 uring_cmd_flags; | ||
| 59 | }; | 60 | }; |
| 60 | __u64 user_data; /* data to be passed back at completion time */ | 61 | __u64 user_data; /* data to be passed back at completion time */ |
| 61 | /* pack this to avoid bogus arm OABI complaints */ | 62 | /* pack this to avoid bogus arm OABI complaints */ |
| @@ -219,6 +220,14 @@ enum io_uring_op { · 157 unmodified lines | |||
| 219 | IORING_OP_LAST, | 220 | IORING_OP_LAST, |
| 220 | }; | 221 | }; |
| 221 | 222 | ||
| 223 | /* | ||
| 224 | * sqe->uring_cmd_flags | ||
| 225 | * IORING_URING_CMD_FIXED use registered buffer; pass thig flag | ||
| 226 | * along with setting sqe->buf_index. | ||
| 227 | */ | ||
| 228 | #define IORING_URING_CMD_FIXED (1U << 0) | ||
| 229 | |||
| 230 | |||
| 222 | /* | 231 | /* |
| 223 | * sqe->fsync_flags | 232 | * sqe->fsync_flags |
| 224 | */ | 233 | */ |