]> www.infradead.org Git - users/jedix/linux-maple.git/commit
btrfs: add io_uring interface for encoded writes
authorMark Harmstone <maharmstone@fb.com>
Fri, 10 Jan 2025 17:23:52 +0000 (17:23 +0000)
committerDavid Sterba <dsterba@suse.com>
Mon, 13 Jan 2025 20:06:31 +0000 (21:06 +0100)
commite32dcdb0af9f31aab05e20f950c2871378082569
tree7d4629361ef09a8bbdef2bb83efd5b190864426c
parentbf50aca633bb5de5901b831bbac0e6b678d61a3f
btrfs: add io_uring interface for encoded writes

Add an io_uring interface for encoded writes, with the same parameters
as the BTRFS_IOC_ENCODED_WRITE ioctl.

As with the encoded reads code, there's a test program for this at
https://github.com/maharmstone/io_uring-encoded, and I'll get this
worked into an fstest.

How io_uring works is that it initially calls btrfs_uring_cmd with the
IO_URING_F_NONBLOCK flag set, and if we return -EAGAIN it tries again in
a kthread with the flag cleared.

Ideally we'd honour this and call try_lock etc., but there's still a lot
of work to be done to create non-blocking versions of all the functions
in our write path. Instead, just validate the input in
btrfs_uring_encoded_write() on the first pass and return -EAGAIN, with a
view to properly optimizing the optimistic path later on.

Signed-off-by: Mark Harmstone <maharmstone@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ioctl.c