Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
65173d4
fuse: rename to fuse_dev_end_requests and make non-static
PlaidCat Mar 5, 2026
848b6fe
fuse: Move fuse_get_dev to header file
PlaidCat Mar 5, 2026
15132c9
fuse: Move request bits
PlaidCat Mar 5, 2026
f9634bc
fuse: make args->in_args[0] to be always the header
PlaidCat Mar 5, 2026
db09b1b
fuse: {io-uring} Handle SQEs - register commands
PlaidCat Mar 5, 2026
7e3c6ba
fuse: Make fuse_copy non static
PlaidCat Mar 5, 2026
a133d0a
fuse: Add fuse-io-uring handling into fuse_copy
PlaidCat Mar 5, 2026
477ad4c
fuse: {io-uring} Make hash-list req unique finding functions non-static
PlaidCat Mar 5, 2026
95a20f8
fuse: Add io-uring sqe commit and fetch support
PlaidCat Mar 5, 2026
67a94d6
fuse: {io-uring} Handle teardown of ring entries
PlaidCat Mar 5, 2026
998e102
fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static
PlaidCat Mar 5, 2026
e90659e
fuse: Allow to queue fg requests through io-uring
PlaidCat Mar 5, 2026
f113285
fuse: Allow to queue bg requests through io-uring
PlaidCat Mar 5, 2026
4c49b12
fuse: {io-uring} Prevent mount point hang on fuse-server termination
PlaidCat Mar 5, 2026
b5d5d9a
fuse: block request allocation until io-uring init is complete
PlaidCat Mar 5, 2026
27c1e70
fuse: enable fuse-over-io-uring
PlaidCat Mar 5, 2026
6870686
fuse: prevent disabling io-uring on active connections
PlaidCat Mar 5, 2026
8556615
fuse: fix uring race condition for null dereference of fc
PlaidCat Mar 5, 2026
f038043
fuse: fix possible deadlock if rings are never initialized
PlaidCat Mar 5, 2026
6eded65
fuse: removed unused function fuse_uring_create() from header
PlaidCat Mar 5, 2026
bc665c1
fuse: {io-uring} Fix a possible req cancellation race
PlaidCat Mar 5, 2026
4bd796a
fuse: remove unneeded atomic set in uring creation
PlaidCat Mar 5, 2026
1cc757b
fuse: missing copy_finish in fuse-over-io-uring argument copies
bmastbergen Oct 21, 2025
58154fb
fuse: fix io-uring list corruption for terminated non-committed requests
bmastbergen Nov 25, 2025
3cd6f92
fuse-uring: fix EFAULT clobber in fuse_uring_commit
bmastbergen Jun 5, 2026
502e881
fuse-uring: fix data races on ring->ready
bmastbergen Jun 5, 2026
23e9c1c
fuse-uring: fix race between registration and connection abortion
bmastbergen Jun 8, 2026
067c739
fuse-uring: check connection abort during ring creation
bmastbergen Aug 13, 2026
92d6a4e
fuse-uring: fix moving cancelled entry to ent_in_userspace list
bmastbergen Aug 13, 2026
b8039c1
fuse-uring: end fuse_req on io-uring cancel task work
bmastbergen Jun 9, 2026
950a7f0
fuse-uring: Avoid use-after-free in fuse_uring_async_stop_queues
bmastbergen Aug 13, 2026
04dfb35
fuse-uring: Avoid queue->stopped races and set/read that value under …
bmastbergen Aug 13, 2026
8ef2615
fuse-uring: make a fuse_req on SQE commit only findable after memcpy
bmastbergen Jun 8, 2026
ac37b82
fuse-uring: remove request-less entries from ent_w_req_queue to fix N…
bmastbergen Aug 13, 2026
70109bd
fuse: fix io-uring background queue dispatch on request completion
bmastbergen Apr 8, 2026
351c3a1
fuse-uring: clear ent->fuse_req in commit_fetch error path
bmastbergen Aug 13, 2026
e664568
fuse: fix missing barrier when checking io-uring readiness
bmastbergen Sep 3, 2026
2132c24
fuse: publish io-uring queues with release semantics
bmastbergen Sep 3, 2026
d4986b6
fuse: copy request headers via a stack buffer for io-uring
bmastbergen Sep 3, 2026
d93628c
fuse: Fix the condition to enable over-io-uring
bmastbergen Sep 3, 2026
55946ba
configs: enable CONFIG_FUSE_IO_URING=y on x86_64 and aarch64
bmastbergen Aug 10, 2026
2e2b56f
selftests: filesystems: Add functional test for the abort file in fus…
bmastbergen Aug 12, 2026
d22d3a6
selftests/fuse: adapt fuse_mnt to libfuse3 API
bmastbergen Aug 12, 2026
d6cdd15
selftests/fuse: add ACL_DONT_CACHE regression test
bmastbergen Aug 12, 2026
148c5dc
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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commit message for this one also mentions ppc64le/s390x architecture but we aren't enabling it there, I assume it is intended behaviour as we don't support them?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, yea, Claude had originally modified all of them, but I limited it to just the archs we support. But forgot to update the commit message. Fixed.

# 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