Skip to content

Expose FUSE_ASYNC_DIO in MountConfig#195

Merged
geertj merged 1 commit into
jacobsa:masterfrom
geertj:dev/asyncdio
Jun 3, 2026
Merged

Expose FUSE_ASYNC_DIO in MountConfig#195
geertj merged 1 commit into
jacobsa:masterfrom
geertj:dev/asyncdio

Conversation

@geertj

@geertj geertj commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

When FUSE handles a read or write operation that is larger than the maximum FUSE message size it has to break up the request into multiple smaller ones. When this flag is set, FUSE will send these smaller requests in parallel to the FUSE server, which can then start the IO for all of them at the same time. This can significanlty increase throughput for remote file systems such as GCSFuse.

On current Linux kernels, the FUSE_ASYNC_DIO works for async IO (io_uring and libaio), but not for the traditional Posix read() and write() operations.

When FUSE handles a read or write operation that is larger than the maximum
FUSE message size it has to break up the request into multiple smaller ones.
When this flag is set, FUSE will send these smaller requests in parallel to the
FUSE server, which can then start the IO for all of them at the same time. This
can significanlty increase throughput for remote file systems such as GCSFuse.

On current Linux kernels, the FUSE_ASYNC_DIO works for async IO (io_uring and
libaio), but not for the traditional Posix read() and write() operations.

@abhishek10004 abhishek10004 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

LGTM

@geertj geertj merged commit 6ac65ea into jacobsa:master Jun 3, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants