| From: |
| Joanne Koong <joannelkoong-AT-gmail.com> |
| To: |
| miklos-AT-szeredi.hu |
| Subject: |
| [PATCH v5 00/11] fuse: support large folios |
| Date: |
| Fri, 25 Apr 2025 17:08:17 -0700 |
| Message-ID: |
| <20250426000828.3216220-1-joannelkoong@gmail.com> |
| Cc: |
| linux-fsdevel-AT-vger.kernel.org, jlayton-AT-kernel.org, jefflexu-AT-linux.alibaba.com, josef-AT-toxicpanda.com, bernd.schubert-AT-fastmail.fm, willy-AT-infradead.org, kernel-team-AT-meta.com |
| Archive-link: |
| Article |
This patchset adds support for large folios in fuse.
This does not yet switch fuse to using large folios. Using large folios in
fuse is dependent on adding granular dirty-page tracking. This will be done
in a separate patchset that will have fuse use iomap [1]. There also needs
to be a followup (also part of future work) for having dirty page balancing
not tank performance for unprivileged servers where bdi limits lead to subpar
throttling [1], before enabling large folios for fuse.
This patchset (v5) is pretty much identical to v3 except for fixing up
readahead error handling.
[1] https://lore.kernel.org/linux-fsdevel/CAJnrk1a38pv3OgFZRf...
Changelog:
v4: https://lore.kernel.org/linux-fsdevel/20250123012448.2479...
v4 -> v5:
* Now that temp pages are removed in FUSE, resubmit v3.
v3: https://lore.kernel.org/linux-fsdevel/20241213221818.3223...
v3 -> v4:
* Add Jeff's reviewed-bys
* Drop writeback large folios changes, drop turning large folios on. These
will be part of a separate future patchset
v2: https://lore.kernel.org/linux-fsdevel/20241125220537.3663...
v2 -> v3:
* Fix direct io parsing to check each extracted page instead of assuming all
pages in a large folio will be used (Matthew)
v1: https://lore.kernel.org/linux-fsdevel/20241109001258.2216...
v1 -> v2:
* Change naming from "non-writeback write" to "writethrough write"
* Fix deadlock for writethrough writes by calling fault_in_iov_iter_readable()
* first
before __filemap_get_folio() (Josef)
* For readahead, retain original folio_size() for descs.length (Josef)
* Use folio_zero_range() api in fuse_copy_folio() (Josef)
* Add Josef's reviewed-bys
Joanne Koong (11):
fuse: support copying large folios
fuse: support large folios for retrieves
fuse: refactor fuse_fill_write_pages()
fuse: support large folios for writethrough writes
fuse: support large folios for folio reads
fuse: support large folios for symlinks
fuse: support large folios for stores
fuse: support large folios for queued writes
fuse: support large folios for readahead
fuse: optimize direct io large folios processing
fuse: support large folios for writeback
fs/fuse/dev.c | 126 ++++++++++++++++++------------------
fs/fuse/dir.c | 8 +--
fs/fuse/file.c | 148 +++++++++++++++++++++++++++++--------------
fs/fuse/fuse_dev_i.h | 2 +-
4 files changed, 169 insertions(+), 115 deletions(-)
--
2.47.1