mbox series

[v4,00/10] fuse: folio conversions

Message ID cover.1727703714.git.josef@toxicpanda.com (mailing list archive)
Headers show
Series fuse: folio conversions | expand

Message

Josef Bacik Sept. 30, 2024, 1:45 p.m. UTC
v3: https://lore.kernel.org/linux-fsdevel/cover.1727469663.git.josef@toxicpanda.com/
v2: https://lore.kernel.org/linux-fsdevel/cover.1724879414.git.josef@toxicpanda.com/
v1: https://lore.kernel.org/linux-fsdevel/cover.1724791233.git.josef@toxicpanda.com/

v3->v4:
- Added Joanne's Reviewed-by's.
- Renamed fuse_do_readpage to fuse_do_readfolio, and updated the comment to be
  more clear about why we were waiting on writeback, per Joanne's comments.
- Used filemap_get_folio instead of the __ variant in fuse_retrieve, per
  Joanne's comments.

v2->v3:
- Discussions with Willy at Plumbers helped clarify expectations around large
  folio usage, he had already converted the generic_perform_write to deal with
  large folios, so I dropped the iomap conversion since it's a bit overkill for
  FUSE's buffered use case.
- Rebased onto linus + fuse/for-next.  I had to combine the branches because
  fuse/for-next is behind linus and there are fixes from Jann and Willy that
  aren't in the FUSE tree.
- Pushed a new GH branch since I had to combine everything
  https://github.com/josefbacik/linux/tree/fuse-folio-prep

v1->v2:
- Fixed my fstests setup to use --nopassthrough so my code actually got tested
  this time.
- Fixed a bug where we double put on the folio in readpages, because previous
  behavior was the reference was maintained until the endio, but
  readahead_folio() drops the reference on the folio, so we need to not call put
  in the endio anymore.
- Fixed the IS_ERR inversion pointed out by Joanne.
- Made the various adjustments pointed out by Willy.
- Updated the Kconfig per hch's suggestion.
- Pushed to my GH tree since there are dependencies to make it easier to see
  what the code is https://github.com/josefbacik/linux/tree/fuse-iomap

--- Original email ---
Hello,

This is a prep series for my work to enable large folios on fuse.  It has two
dependencies, one is Joanne's writeback clean patches

https://lore.kernel.org/linux-fsdevel/20240826211908.75190-1-joannelkoong@gmail.com/

and an iomap patch to allow us to pass the file through the buffered write path

https://lore.kernel.org/linux-fsdevel/7f55c7c32275004ba00cddf862d970e6e633f750.1724755651.git.josef@toxicpanda.com/

I've run these through an fstests run with passthrough_hp --direct-io,
everything looks good.

The last remaining bit that needs to be made to use folios is the splice/pipe
code, which I need to be a lot more careful about.  The next step is to plumb
through the ability to handle large folios.  But this is a decent start and
removes the bulk of FUSE's use of struct page, and is relatively safe and
straightforward.  Thanks,

Josef

Josef Bacik (10):
  fuse: convert readahead to use folios
  fuse: convert fuse_send_write_pages to use folios
  fuse: convert fuse_fill_write_pages to use folios
  fuse: convert fuse_page_mkwrite to use folios
  fuse: use kiocb_modified in buffered write path
  fuse: convert fuse_do_readpage to use folios
  fuse: convert fuse_writepage_need_send to take a folio
  fuse: use the folio based vmstat helpers
  fuse: convert fuse_retrieve to use folios
  fuse: convert fuse_notify_store to use folios

 fs/fuse/dev.c  |  38 +++++++-----
 fs/fuse/file.c | 164 +++++++++++++++++++++++++++++--------------------
 2 files changed, 117 insertions(+), 85 deletions(-)

Comments

Miklos Szeredi Oct. 18, 2024, 9:59 a.m. UTC | #1
On Mon, 30 Sept 2024 at 15:45, Josef Bacik <josef@toxicpanda.com> wrote:

> This is a prep series for my work to enable large folios on fuse.  It has two
> dependencies, one is Joanne's writeback clean patches

Applied with minor modifications.  Now in fuse.git/for-next

Thanks,
Miklos