diff options
| author | Jens Axboe <axboe@kernel.dk> | 2025-06-05 11:39:17 -0600 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2025-06-23 08:59:13 -0600 |
| commit | ecf47d452ced9be162831192fcfb3e9f5cdcde7f (patch) | |
| tree | 4500ed148b99143a3d957692ad45ec9a6d0d38e2 /io_uring/opdef.c | |
| parent | ead21053bf34941c7c7bf680d29b8d15af5406de (diff) | |
| download | linux-ecf47d452ced9be162831192fcfb3e9f5cdcde7f.tar.gz linux-ecf47d452ced9be162831192fcfb3e9f5cdcde7f.tar.bz2 linux-ecf47d452ced9be162831192fcfb3e9f5cdcde7f.zip | |
io_uring/uring_cmd: implement ->sqe_copy() to avoid unnecessary copies
uring_cmd currently copies the full SQE at prep time, just in case it
needs it to be stable. However, for inline completions or requests that
get queued up on the device side, there's no need to ever copy the SQE.
This is particularly important, as various use cases of uring_cmd will
be using 128b sized SQEs.
Opt in to using ->sqe_copy() to let the core of io_uring decide when to
copy SQEs. This callback will only be called if it is safe to do so.
Reviewed-by: Caleb Sander Mateos <csander@purestorage.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/opdef.c')
| -rw-r--r-- | io_uring/opdef.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/io_uring/opdef.c b/io_uring/opdef.c index 6e0882b051f9..287f9a23b816 100644 --- a/io_uring/opdef.c +++ b/io_uring/opdef.c @@ -759,6 +759,7 @@ const struct io_cold_def io_cold_defs[] = { }, [IORING_OP_URING_CMD] = { .name = "URING_CMD", + .sqe_copy = io_uring_cmd_sqe_copy, .cleanup = io_uring_cmd_cleanup, }, [IORING_OP_SEND_ZC] = { |
