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
4bd18c6
fuse: rename to fuse_dev_end_requests and make non-static
PlaidCat Mar 5, 2026
9939c86
fuse: Move fuse_get_dev to header file
PlaidCat Mar 5, 2026
8f00c47
fuse: Move request bits
PlaidCat Mar 5, 2026
ee09348
fuse: make args->in_args[0] to be always the header
PlaidCat Mar 5, 2026
5f97f6a
fuse: {io-uring} Handle SQEs - register commands
PlaidCat Mar 5, 2026
fc1953f
fuse: Make fuse_copy non static
PlaidCat Mar 5, 2026
52aa7c6
fuse: Add fuse-io-uring handling into fuse_copy
PlaidCat Mar 5, 2026
c371ed1
fuse: {io-uring} Make hash-list req unique finding functions non-static
PlaidCat Mar 5, 2026
2529810
fuse: Add io-uring sqe commit and fetch support
PlaidCat Mar 5, 2026
6852466
fuse: {io-uring} Handle teardown of ring entries
PlaidCat Mar 5, 2026
0a3b444
fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static
PlaidCat Mar 5, 2026
7385010
fuse: Allow to queue fg requests through io-uring
PlaidCat Mar 5, 2026
086211f
fuse: Allow to queue bg requests through io-uring
PlaidCat Mar 5, 2026
514c299
fuse: {io-uring} Prevent mount point hang on fuse-server termination
PlaidCat Mar 5, 2026
3f56a80
fuse: block request allocation until io-uring init is complete
PlaidCat Mar 5, 2026
437308a
fuse: enable fuse-over-io-uring
PlaidCat Mar 5, 2026
0884067
fuse: prevent disabling io-uring on active connections
PlaidCat Mar 5, 2026
cf28bc2
fuse: fix uring race condition for null dereference of fc
PlaidCat Mar 5, 2026
f35ecae
fuse: fix possible deadlock if rings are never initialized
PlaidCat Mar 5, 2026
030b254
fuse: removed unused function fuse_uring_create() from header
PlaidCat Mar 5, 2026
95ea398
fuse: {io-uring} Fix a possible req cancellation race
PlaidCat Mar 5, 2026
09488fe
fuse: remove unneeded atomic set in uring creation
PlaidCat Mar 5, 2026
608d474
fuse: missing copy_finish in fuse-over-io-uring argument copies
bmastbergen Oct 21, 2025
f3c6cd9
fuse: fix io-uring list corruption for terminated non-committed requests
bmastbergen Nov 25, 2025
00086a7
fuse-uring: fix EFAULT clobber in fuse_uring_commit
bmastbergen Jun 5, 2026
c419900
fuse-uring: fix data races on ring->ready
bmastbergen Jun 5, 2026
bb833f9
fuse-uring: fix race between registration and connection abortion
bmastbergen Jun 8, 2026
3e530bf
fuse-uring: check connection abort during ring creation
bmastbergen Aug 13, 2026
cb8f748
fuse-uring: fix moving cancelled entry to ent_in_userspace list
bmastbergen Aug 13, 2026
994591e
fuse-uring: end fuse_req on io-uring cancel task work
bmastbergen Jun 9, 2026
01544dc
fuse-uring: Avoid use-after-free in fuse_uring_async_stop_queues
bmastbergen Aug 13, 2026
b585180
fuse-uring: Avoid queue->stopped races and set/read that value under …
bmastbergen Aug 13, 2026
92b0214
fuse-uring: make a fuse_req on SQE commit only findable after memcpy
bmastbergen Jun 8, 2026
589bf8d
fuse-uring: remove request-less entries from ent_w_req_queue to fix N…
bmastbergen Aug 13, 2026
7c3b7f8
fuse: fix io-uring background queue dispatch on request completion
bmastbergen Apr 8, 2026
f0bd8a7
fuse-uring: clear ent->fuse_req in commit_fetch error path
bmastbergen Aug 13, 2026
03132b2
configs: enable CONFIG_FUSE_IO_URING=y on all supported architectures
bmastbergen Aug 10, 2026
b1519cc
selftests: filesystems: Add functional test for the abort file in fus…
bmastbergen Aug 12, 2026
fae98a6
selftests/fuse: adapt fuse_mnt to libfuse3 API
bmastbergen Aug 12, 2026
470d789
selftests/fuse: add ACL_DONT_CACHE regression test
bmastbergen Aug 12, 2026
778cdf3
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
Loading