The in-development Linux 7.3 kernel brings notable FUSE performance improvements, driven by new io_uring buffer pool and zero-copy support authored by Joanne Koong. Previously each FUSE io_uring entry required its own dedicated payload buffer sized to the maximum possible payload, wasting memory. The new buffer pool approach lets the kernel share a contiguous memory pool across requests, and zero-copy allows the server to access client pages or page cache folios directly (requiring CAP_SYS_ADMIN). Benchmarks show significant gains, and the release also includes assorted bug fixes plus early groundwork for large folio support in FUSE, though that isn't complete yet.
Questions this post answers
What performance improvements does FUSE get in the Linux 7.3 kernel?
Linux 7.3 adds io_uring buffer pool support and zero-copy handling to FUSE, authored by Joanne Koong. Previously each io_uring entry needed its own dedicated payload buffer sized for the maximum possible payload, wasting memory since most requests need far less. The new buffer pool lets the kernel share a contiguous memory pool across requests, and zero-copy lets servers access client pages or page cache folios directly, requiring CAP_SYS_ADMIN privileges. Track kernel-level filesystem performance changes like this FUSE io_uring work on daily.dev.
What is required to use FUSE zero-copy with io_uring in Linux 7.3?
Zero-copy support for FUSE's io_uring transport requires CAP_SYS_ADMIN privileges and use of buffer pools. This lets the server directly access client pages or page cache folios without copying data through an intermediary buffer, reducing overhead compared to the previous buffer-per-entry model. Developers tuning filesystem performance can follow io_uring and FUSE developments on daily.dev.