Message ID | 20240124083301.8661-1-tony.solomonik@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | io_uring: add support for ftruncate | expand |
On Wed, 24 Jan 2024 at 09:33, Tony Solomonik <tony.solomonik@gmail.com> 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 Ced
On 1/24/24 1:52 AM, Cedric Blancher wrote: > On Wed, 24 Jan 2024 at 09:33, Tony Solomonik <tony.solomonik@gmail.com> 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.
On Wed, 24 Jan 2024 at 13:52, Jens Axboe <axboe@kernel.dk> wrote: > > On 1/24/24 1:52 AM, Cedric Blancher wrote: > > On Wed, 24 Jan 2024 at 09:33, Tony Solomonik <tony.solomonik@gmail.com> 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? Ced
On 1/24/24 6:35 AM, Cedric Blancher wrote: > On Wed, 24 Jan 2024 at 13:52, Jens Axboe <axboe@kernel.dk> wrote: >> >> On 1/24/24 1:52 AM, Cedric Blancher wrote: >>> On Wed, 24 Jan 2024 at 09:33, Tony Solomonik <tony.solomonik@gmail.com> 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.