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
95eeeda
fuse: rename to fuse_dev_end_requests and make non-static
PlaidCat Mar 5, 2026
1490045
fuse: Move fuse_get_dev to header file
PlaidCat Mar 5, 2026
78d8784
fuse: Move request bits
PlaidCat Mar 5, 2026
39da228
fuse: make args->in_args[0] to be always the header
PlaidCat Mar 5, 2026
1f4f625
fuse: {io-uring} Handle SQEs - register commands
PlaidCat Mar 5, 2026
66963a5
fuse: Make fuse_copy non static
PlaidCat Mar 5, 2026
9005e0a
fuse: Add fuse-io-uring handling into fuse_copy
PlaidCat Mar 5, 2026
dbd479a
fuse: {io-uring} Make hash-list req unique finding functions non-static
PlaidCat Mar 5, 2026
874c9b2
fuse: Add io-uring sqe commit and fetch support
PlaidCat Mar 5, 2026
197b398
fuse: {io-uring} Handle teardown of ring entries
PlaidCat Mar 5, 2026
1e8a4cf
fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static
PlaidCat Mar 5, 2026
909b7f3
fuse: Allow to queue fg requests through io-uring
PlaidCat Mar 5, 2026
b745596
fuse: Allow to queue bg requests through io-uring
PlaidCat Mar 5, 2026
b3416b0
fuse: {io-uring} Prevent mount point hang on fuse-server termination
PlaidCat Mar 5, 2026
708279d
fuse: block request allocation until io-uring init is complete
PlaidCat Mar 5, 2026
51a20d6
fuse: enable fuse-over-io-uring
PlaidCat Mar 5, 2026
122e09d
fuse: prevent disabling io-uring on active connections
PlaidCat Mar 5, 2026
5257dcd
fuse: fix uring race condition for null dereference of fc
PlaidCat Mar 5, 2026
76eebba
fuse: fix possible deadlock if rings are never initialized
PlaidCat Mar 5, 2026
2b7974b
fuse: removed unused function fuse_uring_create() from header
PlaidCat Mar 5, 2026
acbabec
fuse: {io-uring} Fix a possible req cancellation race
PlaidCat Mar 5, 2026
7d6d4a3
fuse: remove unneeded atomic set in uring creation
PlaidCat Mar 5, 2026
9cbb906
fuse: missing copy_finish in fuse-over-io-uring argument copies
bmastbergen Oct 21, 2025
e2e0996
fuse: fix io-uring list corruption for terminated non-committed requests
bmastbergen Nov 25, 2025
f332421
fuse-uring: fix EFAULT clobber in fuse_uring_commit
bmastbergen Jun 5, 2026
93cbe0d
fuse-uring: fix data races on ring->ready
bmastbergen Jun 5, 2026
491954d
fuse-uring: fix race between registration and connection abortion
bmastbergen Jun 8, 2026
9fa8488
fuse-uring: check connection abort during ring creation
bmastbergen Aug 13, 2026
3d0646e
fuse-uring: fix moving cancelled entry to ent_in_userspace list
bmastbergen Aug 13, 2026
1e39d2e
fuse-uring: end fuse_req on io-uring cancel task work
bmastbergen Jun 9, 2026
7bcee3c
fuse-uring: Avoid use-after-free in fuse_uring_async_stop_queues
bmastbergen Aug 13, 2026
a3f5d18
fuse-uring: Avoid queue->stopped races and set/read that value under …
bmastbergen Aug 13, 2026
b31506c
fuse-uring: make a fuse_req on SQE commit only findable after memcpy
bmastbergen Jun 8, 2026
1ce70cc
fuse-uring: remove request-less entries from ent_w_req_queue to fix N…
bmastbergen Aug 13, 2026
a53161d
fuse: fix io-uring background queue dispatch on request completion
bmastbergen Apr 8, 2026
324dc0c
fuse-uring: clear ent->fuse_req in commit_fetch error path
bmastbergen Aug 13, 2026
0bc0ad5
configs: enable CONFIG_FUSE_IO_URING=y on all supported architectures
bmastbergen Aug 10, 2026
cb132b5
selftests: filesystems: Add functional test for the abort file in fus…
bmastbergen Aug 12, 2026
c562198
selftests/fuse: adapt fuse_mnt to libfuse3 API
bmastbergen Aug 12, 2026
1ffeab8
selftests/fuse: add ACL_DONT_CACHE regression test
bmastbergen Aug 12, 2026
460dce7
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