Linux Btrfs filesystem development
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: [PATCH 00/46] btrfs: convert most of the data path to use folios
Date: Fri, 26 Jul 2024 15:35:47 -0400	[thread overview]
Message-ID: <cover.1722022376.git.josef@toxicpanda.com> (raw)

Hello,

Willy indicated that he wants to get rid of page->index in the next merge
window, so I went to look at what that would entail for btrfs, and I got a
little carried away.

This patch series does in fact accomplish that, but it takes almost the entirety
of the data write path and makes it work with only folios.  I was going to
convert everything, but there's some weird gaps that need to be handled in their
own chunk.

1. Scrub.  We're still passing around page pointers.  Not a huge deal, it was
   just another 10ish patches just for that work, so I decided against it.

2. Buffered writes.  Again, I did most of this work and it wasn't bad, but then
   I realized that the free space cache uses some of this code, and I really
   don't want to convert that code, I want to delete it, so I'll do that first.

3. Metadata.  Qu has been doing this consistently and I didn't want to get in
   the way of his work so I just left most of that.

This has run through the CI and didn't cause any issues.  I've made everything
as easy to review as possible and as small as possible.  My eyes started to
glaze over a little bit with the changelogs, so let me know if there's anything
you want changed.  Thanks,

Josef

Josef Bacik (46):
  btrfs: convert btrfs_readahead to only use folio
  btrfs: convert btrfs_read_folio to only use a folio
  btrfs: convert end_page_read to take a folio
  btrfs: convert begin_page_folio to take a folio instead
  btrfs: convert submit_extent_page to use a folio
  btrfs: convert btrfs_do_readpage to only use a folio
  btrfs: update the writepage tracepoint to take a folio
  btrfs: convert __extent_writepage_io to take a folio
  btrfs: convert extent_write_locked_range to use folios
  btrfs: convert __extent_writepage to be completely folio based
  btrfs: convert add_ra_bio_pages to use only folios
  btrfs: utilize folio more in btrfs_page_mkwrite
  btrfs: convert can_finish_ordered_extent to use a folio
  btrfs: convert btrfs_finish_ordered_extent to take a folio
  btrfs: convert btrfs_mark_ordered_io_finished to take a folio
  btrfs: convert writepage_delalloc to take a folio
  btrfs: convert find_lock_delalloc_range to use a folio
  btrfs: convert lock_delalloc_pages to take a folio
  btrfs: convert __unlock_for_delalloc to take a folio
  btrfs: convert __process_pages_contig to take a folio
  btrfs: convert process_one_page to operate only on folios
  btrfs: convert extent_clear_unlock_delalloc to take a folio
  btrfs: convert extent_write_locked_range to take a folio
  btrfs: convert run_delalloc_cow to take a folio
  btrfs: convert cow_file_range_inline to take a folio
  btrfs: convert cow_file_range to take a folio
  btrfs: convert fallback_to_cow to take a folio
  btrfs: convert run_delalloc_nocow to take a folio
  btrfs: convert btrfs_cleanup_ordered_extents to use folios
  btrfs: convert btrfs_cleanup_ordered_extents to take a folio
  btrfs: convert run_delalloc_compressed to take a folio
  btrfs: convert btrfs_run_delalloc_range to take a folio
  btrfs: convert async_chunk to hold a folio
  btrfs: convert submit_uncompressed_range to take a folio
  btrfs: convert btrfs_writepage_fixup_worker to use a folio
  btrfs: convert btrfs_writepage_cow_fixup to use folio
  btrfs: convert btrfs_writepage_fixup to use a folio
  btrfs: convert uncompress_inline to take a folio
  btrfs: convert read_inline_extent to use a folio
  btrfs: convert btrfs_get_extent to take a folio
  btrfs: convert __get_extent_map to take a folio
  btrfs: convert find_next_dirty_byte to take a folio
  btrfs: convert wait_subpage_spinlock to only use a folio
  btrfs: convert btrfs_set_range_writeback to use a folio
  btrfs: convert insert_inline_extent to use a folio
  btrfs: convert extent_range_clear_dirty_for_io to use a folio

 fs/btrfs/btrfs_inode.h           |   6 +-
 fs/btrfs/compression.c           |  62 +++--
 fs/btrfs/extent_io.c             | 436 +++++++++++++++----------------
 fs/btrfs/extent_io.h             |   6 +-
 fs/btrfs/file.c                  |  24 +-
 fs/btrfs/inode.c                 | 342 ++++++++++++------------
 fs/btrfs/ordered-data.c          |  28 +-
 fs/btrfs/ordered-data.h          |   6 +-
 fs/btrfs/tests/extent-io-tests.c |  10 +-
 include/trace/events/btrfs.h     |  10 +-
 10 files changed, 467 insertions(+), 463 deletions(-)

-- 
2.43.0


             reply	other threads:[~2024-07-26 19:36 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-26 19:35 Josef Bacik [this message]
2024-07-26 19:35 ` [PATCH 01/46] btrfs: convert btrfs_readahead to only use folio Josef Bacik
2024-07-26 19:35 ` [PATCH 02/46] btrfs: convert btrfs_read_folio to only use a folio Josef Bacik
2024-07-26 19:35 ` [PATCH 03/46] btrfs: convert end_page_read to take " Josef Bacik
2024-07-26 19:35 ` [PATCH 04/46] btrfs: convert begin_page_folio to take a folio instead Josef Bacik
2024-07-26 19:35 ` [PATCH 05/46] btrfs: convert submit_extent_page to use a folio Josef Bacik
2024-07-26 19:35 ` [PATCH 06/46] btrfs: convert btrfs_do_readpage to only " Josef Bacik
2024-07-26 19:35 ` [PATCH 07/46] btrfs: update the writepage tracepoint to take " Josef Bacik
2024-07-26 19:35 ` [PATCH 08/46] btrfs: convert __extent_writepage_io " Josef Bacik
2024-07-26 19:35 ` [PATCH 09/46] btrfs: convert extent_write_locked_range to use folios Josef Bacik
2024-07-26 19:35 ` [PATCH 10/46] btrfs: convert __extent_writepage to be completely folio based Josef Bacik
2024-07-26 19:35 ` [PATCH 11/46] btrfs: convert add_ra_bio_pages to use only folios Josef Bacik
2024-07-26 19:35 ` [PATCH 12/46] btrfs: utilize folio more in btrfs_page_mkwrite Josef Bacik
2024-07-26 19:36 ` [PATCH 13/46] btrfs: convert can_finish_ordered_extent to use a folio Josef Bacik
2024-07-26 19:36 ` [PATCH 14/46] btrfs: convert btrfs_finish_ordered_extent to take " Josef Bacik
2024-07-26 19:36 ` [PATCH 15/46] btrfs: convert btrfs_mark_ordered_io_finished " Josef Bacik
2024-07-26 19:36 ` [PATCH 16/46] btrfs: convert writepage_delalloc " Josef Bacik
2024-07-26 19:36 ` [PATCH 17/46] btrfs: convert find_lock_delalloc_range to use " Josef Bacik
2024-07-26 19:36 ` [PATCH 18/46] btrfs: convert lock_delalloc_pages to take " Josef Bacik
2024-07-26 19:36 ` [PATCH 19/46] btrfs: convert __unlock_for_delalloc " Josef Bacik
2024-07-26 19:36 ` [PATCH 20/46] btrfs: convert __process_pages_contig " Josef Bacik
2024-07-26 19:36 ` [PATCH 21/46] btrfs: convert process_one_page to operate only on folios Josef Bacik
2024-07-26 19:36 ` [PATCH 22/46] btrfs: convert extent_clear_unlock_delalloc to take a folio Josef Bacik
2024-07-26 19:36 ` [PATCH 23/46] btrfs: convert extent_write_locked_range " Josef Bacik
2024-07-26 19:36 ` [PATCH 24/46] btrfs: convert run_delalloc_cow " Josef Bacik
2024-07-26 19:36 ` [PATCH 25/46] btrfs: convert cow_file_range_inline " Josef Bacik
2024-07-26 19:36 ` [PATCH 26/46] btrfs: convert cow_file_range " Josef Bacik
2024-07-26 19:36 ` [PATCH 27/46] btrfs: convert fallback_to_cow " Josef Bacik
2024-07-26 19:36 ` [PATCH 28/46] btrfs: convert run_delalloc_nocow " Josef Bacik
2024-07-26 19:36 ` [PATCH 29/46] btrfs: convert btrfs_cleanup_ordered_extents to use folios Josef Bacik
2024-07-26 19:36 ` [PATCH 30/46] btrfs: convert btrfs_cleanup_ordered_extents to take a folio Josef Bacik
2024-07-26 19:36 ` [PATCH 31/46] btrfs: convert run_delalloc_compressed " Josef Bacik
2024-07-26 19:36 ` [PATCH 32/46] btrfs: convert btrfs_run_delalloc_range " Josef Bacik
2024-07-26 19:36 ` [PATCH 33/46] btrfs: convert async_chunk to hold " Josef Bacik
2024-07-26 19:36 ` [PATCH 34/46] btrfs: convert submit_uncompressed_range to take " Josef Bacik
2024-07-26 19:36 ` [PATCH 35/46] btrfs: convert btrfs_writepage_fixup_worker to use " Josef Bacik
2024-07-26 19:36 ` [PATCH 36/46] btrfs: convert btrfs_writepage_cow_fixup to use folio Josef Bacik
2024-07-26 19:36 ` [PATCH 37/46] btrfs: convert btrfs_writepage_fixup to use a folio Josef Bacik
2024-07-26 19:36 ` [PATCH 38/46] btrfs: convert uncompress_inline to take " Josef Bacik
2024-07-26 19:36 ` [PATCH 39/46] btrfs: convert read_inline_extent to use " Josef Bacik
2024-07-26 19:36 ` [PATCH 40/46] btrfs: convert btrfs_get_extent to take " Josef Bacik
2024-07-26 19:36 ` [PATCH 41/46] btrfs: convert __get_extent_map " Josef Bacik
2024-07-26 19:36 ` [PATCH 42/46] btrfs: convert find_next_dirty_byte " Josef Bacik
2024-07-26 19:36 ` [PATCH 43/46] btrfs: convert wait_subpage_spinlock to only use " Josef Bacik
2024-07-26 19:36 ` [PATCH 44/46] btrfs: convert btrfs_set_range_writeback to " Josef Bacik
2024-07-26 19:36 ` [PATCH 45/46] btrfs: convert insert_inline_extent " Josef Bacik
2024-07-26 19:36 ` [PATCH 46/46] btrfs: convert extent_range_clear_dirty_for_io " Josef Bacik
2024-07-26 22:57 ` [PATCH 00/46] btrfs: convert most of the data path to use folios Qu Wenruo
2024-07-27  0:55   ` Neal Gompa
2024-07-29 14:43     ` Josef Bacik
2024-07-29 20:32 ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1722022376.git.josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox