On 1/24/24 6:35 AM, Cedric Blancher wrote: > On Wed, 24 Jan 2024 at 13:52, Jens Axboe <axboe@xxxxxxxxx> wrote: >> >> On 1/24/24 1:52 AM, Cedric Blancher wrote: >>> On Wed, 24 Jan 2024 at 09:33, Tony Solomonik <tony.solomonik@xxxxxxxxx> wrote: >>>> >>>> This patch 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. >>>> >>>> Tony Solomonik (2): >>>> Add ftruncate_file that truncates a struct file >>>> io_uring: add support for ftruncate >>>> >>>> fs/internal.h | 1 + >>>> fs/open.c | 53 ++++++++++++++++++----------------- >>>> include/uapi/linux/io_uring.h | 1 + >>>> io_uring/Makefile | 2 +- >>>> io_uring/opdef.c | 10 +++++++ >>>> io_uring/truncate.c | 48 +++++++++++++++++++++++++++++++ >>>> io_uring/truncate.h | 4 +++ >>>> 7 files changed, 93 insertions(+), 26 deletions(-) >>>> create mode 100644 io_uring/truncate.c >>>> create mode 100644 io_uring/truncate.h >>>> >>>> >>>> base-commit: d3fa86b1a7b4cdc4367acacea16b72e0a200b3d7 >>> >>> Also fallocate() to punch holes, aka sparse files, must be implemented >> >> fallocate has been supported for years. > > Does it support punching holes? Does lseek() with SEEK_HOLE and > SEEK_DATA work, with more than one hole, and/or hole at the end? It does anything that fallocate(2) will do. -- Jens Axboe