Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
c3e24da
fuse: rename to fuse_dev_end_requests and make non-static
PlaidCat Mar 5, 2026
39d4948
fuse: Move fuse_get_dev to header file
PlaidCat Mar 5, 2026
85bb9c8
fuse: Move request bits
PlaidCat Mar 5, 2026
854ec40
fuse: make args->in_args[0] to be always the header
PlaidCat Mar 5, 2026
5264a14
fuse: {io-uring} Handle SQEs - register commands
PlaidCat Mar 5, 2026
b7772db
fuse: Make fuse_copy non static
PlaidCat Mar 5, 2026
8eec223
fuse: Add fuse-io-uring handling into fuse_copy
PlaidCat Mar 5, 2026
8082943
fuse: {io-uring} Make hash-list req unique finding functions non-static
PlaidCat Mar 5, 2026
2ae6265
fuse: Add io-uring sqe commit and fetch support
PlaidCat Mar 5, 2026
44b46fa
fuse: {io-uring} Handle teardown of ring entries
PlaidCat Mar 5, 2026
05009a3
fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static
PlaidCat Mar 5, 2026
d39a50d
fuse: Allow to queue fg requests through io-uring
PlaidCat Mar 5, 2026
b1e32d3
fuse: Allow to queue bg requests through io-uring
PlaidCat Mar 5, 2026
1c188e3
fuse: {io-uring} Prevent mount point hang on fuse-server termination
PlaidCat Mar 5, 2026
e26f19f
fuse: block request allocation until io-uring init is complete
PlaidCat Mar 5, 2026
292effb
fuse: enable fuse-over-io-uring
PlaidCat Mar 5, 2026
05d9b6a
fuse: prevent disabling io-uring on active connections
PlaidCat Mar 5, 2026
3750efd
fuse: fix uring race condition for null dereference of fc
PlaidCat Mar 5, 2026
3b57f21
fuse: fix possible deadlock if rings are never initialized
PlaidCat Mar 5, 2026
00b91c9
fuse: removed unused function fuse_uring_create() from header
PlaidCat Mar 5, 2026
db10640
fuse: {io-uring} Fix a possible req cancellation race
PlaidCat Mar 5, 2026
cf1687f
fuse: remove unneeded atomic set in uring creation
PlaidCat Mar 5, 2026
7eca8b0
fuse: missing copy_finish in fuse-over-io-uring argument copies
bmastbergen Oct 21, 2025
00c5b09
fuse: fix io-uring list corruption for terminated non-committed requests
bmastbergen Nov 25, 2025
d82a6fa
fuse-uring: fix EFAULT clobber in fuse_uring_commit
bmastbergen Jun 5, 2026
70a3f5a
fuse-uring: fix data races on ring->ready
bmastbergen Jun 5, 2026
c183066
fuse-uring: fix race between registration and connection abortion
bmastbergen Jun 8, 2026
422456e
fuse-uring: check connection abort during ring creation
bmastbergen Aug 13, 2026
d5764a2
fuse-uring: fix moving cancelled entry to ent_in_userspace list
bmastbergen Aug 13, 2026
963ec55
fuse-uring: end fuse_req on io-uring cancel task work
bmastbergen Jun 9, 2026
f222a10
fuse-uring: Avoid use-after-free in fuse_uring_async_stop_queues
bmastbergen Aug 13, 2026
e90d509
fuse-uring: Avoid queue->stopped races and set/read that value under …
bmastbergen Aug 13, 2026
e617ce0
fuse-uring: make a fuse_req on SQE commit only findable after memcpy
bmastbergen Jun 8, 2026
b1f2020
fuse-uring: remove request-less entries from ent_w_req_queue to fix N…
bmastbergen Aug 13, 2026
50c4464
fuse: fix io-uring background queue dispatch on request completion
bmastbergen Apr 8, 2026
7e63de3
fuse-uring: clear ent->fuse_req in commit_fetch error path
bmastbergen Aug 13, 2026
70c6384
configs: enable CONFIG_FUSE_IO_URING=y on all supported architectures
bmastbergen Aug 10, 2026
7a65132
selftests: filesystems: Add functional test for the abort file in fus…
bmastbergen Aug 12, 2026
884c1f5
selftests/fuse: adapt fuse_mnt to libfuse3 API
bmastbergen Aug 12, 2026
07fc76e
selftests/fuse: add ACL_DONT_CACHE regression test
bmastbergen Aug 12, 2026
04b9923
selftests/fuse: add FUSE io-uring integration test
bmastbergen Aug 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -9443,6 +9443,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git
F: Documentation/filesystems/fuse.rst
F: fs/fuse/
F: include/uapi/linux/fuse.h
F: tools/testing/selftests/filesystems/fuse/

FUTEX SUBSYSTEM
M: Thomas Gleixner <tglx@linutronix.de>
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-64k-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2300,6 +2300,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-64k-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2284,6 +2284,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2297,6 +2297,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2281,6 +2281,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-rt-64k-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2339,6 +2339,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-rt-64k-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2323,6 +2323,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-rt-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2336,6 +2336,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-aarch64-rt-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2320,6 +2320,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-x86_64-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2167,6 +2167,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-x86_64-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2151,6 +2151,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-x86_64-rt-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2206,6 +2206,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
1 change: 1 addition & 0 deletions configs/kernel-x86_64-rt-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -2190,6 +2190,7 @@ CONFIG_FUNCTION_TRACER=y
# CONFIG_FUN_ETH is not set
CONFIG_FUSE_DAX=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_IO_URING=y
CONFIG_FUSE_PASSTHROUGH=y
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_FC is not set
Expand Down
12 changes: 12 additions & 0 deletions fs/fuse/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,15 @@ config FUSE_PASSTHROUGH
to be performed directly on a backing file.

If you want to allow passthrough operations, answer Y.

config FUSE_IO_URING
bool "FUSE communication over io-uring"
default y
depends on FUSE_FS
depends on IO_URING
help
This allows sending FUSE requests over the io-uring interface and
also adds request core affinity.

If you want to allow fuse server/client communication through io-uring,
answer Y
1 change: 1 addition & 0 deletions fs/fuse/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ fuse-y := dev.o dir.o file.o inode.o control.o xattr.o acl.o readdir.o ioctl.o
fuse-y += iomode.o
fuse-$(CONFIG_FUSE_DAX) += dax.o
fuse-$(CONFIG_FUSE_PASSTHROUGH) += passthrough.o
fuse-$(CONFIG_FUSE_IO_URING) += dev_uring.o

virtiofs-y := virtio_fs.o
11 changes: 6 additions & 5 deletions fs/fuse/dax.c
Original file line number Diff line number Diff line change
Expand Up @@ -240,11 +240,12 @@ static int fuse_send_removemapping(struct inode *inode,

args.opcode = FUSE_REMOVEMAPPING;
args.nodeid = fi->nodeid;
args.in_numargs = 2;
args.in_args[0].size = sizeof(*inargp);
args.in_args[0].value = inargp;
args.in_args[1].size = inargp->count * sizeof(*remove_one);
args.in_args[1].value = remove_one;
args.in_numargs = 3;
fuse_set_zero_arg0(&args);
args.in_args[1].size = sizeof(*inargp);
args.in_args[1].value = inargp;
args.in_args[2].size = inargp->count * sizeof(*remove_one);
args.in_args[2].value = remove_one;
return fuse_simple_request(fm, &args);
}

Expand Down
Loading