diff options
author | Tony Solomonik <tony.solomonik@gmail.com> | 2024-02-02 13:17:24 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2024-02-09 17:04:39 +0100 |
commit | b4bb1900c12e6a0fe11ff51e1aa6eea19a4ad635 (patch) | |
tree | eb81db2cd90eb75485851716f918ac2568307e1e /io_uring/opdef.c | |
parent | Add do_ftruncate that truncates a struct file (diff) | |
download | linux-b4bb1900c12e6a0fe11ff51e1aa6eea19a4ad635.tar.xz linux-b4bb1900c12e6a0fe11ff51e1aa6eea19a4ad635.zip |
io_uring: add support for ftruncate
Adds support for doing truncate through io_uring, eliminating
the need for applications to roll their own thread pool or offload
mechanism to be able to do non-blocking truncates.
Signed-off-by: Tony Solomonik <tony.solomonik@gmail.com>
Link: https://lore.kernel.org/r/20240202121724.17461-3-tony.solomonik@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/opdef.c')
-rw-r--r-- | io_uring/opdef.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/io_uring/opdef.c b/io_uring/opdef.c index b1ee3a9c3807..9c080aadc5a6 100644 --- a/io_uring/opdef.c +++ b/io_uring/opdef.c @@ -35,6 +35,7 @@ #include "rw.h" #include "waitid.h" #include "futex.h" +#include "truncate.h" static int io_no_issue(struct io_kiocb *req, unsigned int issue_flags) { @@ -474,6 +475,12 @@ const struct io_issue_def io_issue_defs[] = { .prep = io_install_fixed_fd_prep, .issue = io_install_fixed_fd, }, + [IORING_OP_FTRUNCATE] = { + .needs_file = 1, + .hash_reg_file = 1, + .prep = io_ftruncate_prep, + .issue = io_ftruncate, + }, }; const struct io_cold_def io_cold_defs[] = { @@ -712,6 +719,9 @@ const struct io_cold_def io_cold_defs[] = { [IORING_OP_FIXED_FD_INSTALL] = { .name = "FIXED_FD_INSTALL", }, + [IORING_OP_FTRUNCATE] = { + .name = "FTRUNCATE", + }, }; const char *io_uring_get_opcode(u8 opcode) |