btrfs: prepare for larger folios support
From: | Qu Wenruo <wqu-AT-suse.com> | |
To: | linux-btrfs-AT-vger.kernel.org | |
Subject: | [PATCH 0/5] btrfs: prepare for larger folios support | |
Date: | Thu, 20 Feb 2025 19:52:21 +1030 | |
Message-ID: | <cover.1740043233.git.wqu@suse.com> | |
Archive-link: | Article |
This means: - Our subpage routine should check against the folio size other than PAGE_SIZE - Make functions handling filemap folios to use folio_size() other than PAGE_SIZE The most common paths are: * Buffered reads/writes * Uncompressed folio writeback Already handled pretty well * Compressed read * Compressed write To take full advantage of larger folios, we should use folio_iter other than bvec_iter. This will be a dedicated patchset, and the existing bvec_iter can still handle larger folios. Internal usages can still use page sized folios, or even pages, including: * Encoded reads/writes * Compressed folios * RAID56 internal pages * Scrub internal pages This patchset will handle the above mentioned points by: - Prepare the subpage routine to handle larger folios This will introduce a small overhead, as all checks are against folio sizes, even on x86_64 we can no longer skip subpage completely. This is done in the first patch. - Convert straightforward PAGE_SIZE users to use folio_size() This is done in the remaining patches. Currently this patchset is not a exhaustive conversion, I'm pretty sure there are other complex situations which can cause problems. Those problems can only be exposed and fixed after switching on the experimental larger folios support later. Qu Wenruo (5): btrfs: prepare subpage.c for larger folios support btrfs: remove the PAGE_SIZE usage inside inline extent reads btrfs: prepare btrfs_launcher_folio() for larger folios support btrfs: prepare extent_io.c for future larger folio support btrfs: prepare btrfs_page_mkwrite() for larger folios fs/btrfs/extent_io.c | 50 +++++++++++++++++++++++++------------------- fs/btrfs/file.c | 19 +++++++++-------- fs/btrfs/inode.c | 8 +++---- fs/btrfs/subpage.c | 36 +++++++++++++++---------------- fs/btrfs/subpage.h | 24 ++++++++------------- 5 files changed, 69 insertions(+), 68 deletions(-) -- 2.48.1