mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-27 06:50:37 +00:00

Have buffered writes go through iomap. This has two advantages: * granular large folio synchronous reads * granular large folio dirty tracking If for example there is a 1 MB large folio and a write issued at pos 1 to pos 1 MB - 2, only the head and tail pages will need to be read in and marked uptodate instead of the entire folio needing to be read in. Non-relevant trailing pages are also skipped (eg if for a 1 MB large folio a write is issued at pos 1 to 4099, only the first two pages are read in and the ones after that are skipped). iomap also has granular dirty tracking. This is useful in that when it comes to writeback time, only the dirty portions of the large folio will be written instead of having to write out the entire folio. For example if there is a 1 MB large folio and only 2 bytes in it are dirty, only the page for those dirty bytes get written out. Please note that granular writeback is only done once fuse also uses iomap in writeback (separate commit). .release_folio needs to be set to iomap_release_folio so that any allocated iomap ifs structs get freed. Signed-off-by: Joanne Koong <joannelkoong@gmail.com> Link: https://lore.kernel.org/20250715202122.2282532-2-joannelkoong@gmail.com Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
79 lines
2.2 KiB
Plaintext
79 lines
2.2 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
config FUSE_FS
|
|
tristate "FUSE (Filesystem in Userspace) support"
|
|
select FS_POSIX_ACL
|
|
select FS_IOMAP
|
|
help
|
|
With FUSE it is possible to implement a fully functional filesystem
|
|
in a userspace program.
|
|
|
|
There's also a companion library: libfuse2. This library is available
|
|
from the FUSE homepage:
|
|
<https://github.com/libfuse/>
|
|
although chances are your distribution already has that library
|
|
installed if you've installed the "fuse" package itself.
|
|
|
|
See <file:Documentation/filesystems/fuse.rst> for more information.
|
|
See <file:Documentation/Changes> for needed library/utility version.
|
|
|
|
If you want to develop a userspace FS, or if you want to use
|
|
a filesystem based on FUSE, answer Y or M.
|
|
|
|
config CUSE
|
|
tristate "Character device in Userspace support"
|
|
depends on FUSE_FS
|
|
help
|
|
This FUSE extension allows character devices to be
|
|
implemented in userspace.
|
|
|
|
If you want to develop or use a userspace character device
|
|
based on CUSE, answer Y or M.
|
|
|
|
config VIRTIO_FS
|
|
tristate "Virtio Filesystem"
|
|
depends on FUSE_FS
|
|
select VIRTIO
|
|
help
|
|
The Virtio Filesystem allows guests to mount file systems from the
|
|
host.
|
|
|
|
If you want to share files between guests or with the host, answer Y
|
|
or M.
|
|
|
|
config FUSE_DAX
|
|
bool "Virtio Filesystem Direct Host Memory Access support"
|
|
default y
|
|
select INTERVAL_TREE
|
|
depends on VIRTIO_FS
|
|
depends on FS_DAX
|
|
depends on DAX
|
|
help
|
|
This allows bypassing guest page cache and allows mapping host page
|
|
cache directly in guest address space.
|
|
|
|
If you want to allow mounting a Virtio Filesystem with the "dax"
|
|
option, answer Y.
|
|
|
|
config FUSE_PASSTHROUGH
|
|
bool "FUSE passthrough operations support"
|
|
default y
|
|
depends on FUSE_FS
|
|
select FS_STACK
|
|
help
|
|
This allows bypassing FUSE server by mapping specific FUSE operations
|
|
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
|