Re: Patch "btrfs: move large data folios out of experimental features" has been added to the 7.1-stable tree
Qu Wenruo <[email protected]>
| Newsgroups | org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
在 2026/8/12 09:37, Sasha Levin 写道: > This is a note to let you know that I've just added the patch titled > > btrfs: move large data folios out of experimental features > > to the 7.1-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > btrfs-move-large-data-folios-out-of-experimental-fea.patch > and it can be found in the queue-7.1 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, > please let <[email protected]> know about it. Please don't merge this new feature into any stable tree. This feature is not compatible with the COW fixup mechanism in old kernels. Thanks, Qu > > > > commit 3d8483065b9a103c8f10a57dd8638ce0f29b1dba > Author: Qu Wenruo <[email protected]> > Date: Fri Apr 24 10:20:25 2026 +0930 > > btrfs: move large data folios out of experimental features > > [ Upstream commit 9bce95edb1b4d2802de9273b5170bfcff3090d24 ] > > This feature was introduced in v6.17 under experimental, and we had > several small bugs related to or exposed by that: > > e9e3b22ddfa7 ("btrfs: fix beyond-EOF write handling") > 18de34daa7c6 ("btrfs: truncate ordered extent when skipping writeback past i_size") > > Otherwise, the feature has been frequently tested by btrfs developers. > > The latest fix only arrived in v6.19. After three releases, I think it's > time to move this feature out of experimental. > > And since we're here, also remove the comment about the bitmap size > limit, which is no longer relevant in the context. It will soon be > outdated for the incoming huge folio support. > > Reviewed-by: Neal Gompa <[email protected]> > Signed-off-by: Qu Wenruo <[email protected]> > Signed-off-by: David Sterba <[email protected]> > Stable-dep-of: 4c375ac546ea ("btrfs: disable bs > ps support if no transparent hugepage support") > Signed-off-by: Sasha Levin <[email protected]> > > diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig > index 5e75438e0b738..55eba4f1b6c79 100644 > --- a/fs/btrfs/Kconfig > +++ b/fs/btrfs/Kconfig > @@ -110,7 +110,7 @@ config BTRFS_EXPERIMENTAL > > - extent tree v2 - complex rework of extent tracking > > - - large folio and block size (> page size) support > + - block size > page size support > > - asynchronous checksum generation for data writes > > diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h > index beb75f152d5cd..8a802e3675cd8 100644 > --- a/fs/btrfs/btrfs_inode.h > +++ b/fs/btrfs/btrfs_inode.h > @@ -533,12 +533,9 @@ static inline void btrfs_set_inode_mapping_order(struct btrfs_inode *inode) > /* Metadata inode should not reach here. */ > ASSERT(is_data_inode(inode)); > > - /* We only allow BITS_PER_LONGS blocks for each bitmap. */ > -#ifdef CONFIG_BTRFS_EXPERIMENTAL > mapping_set_folio_order_range(inode->vfs_inode.i_mapping, > inode->root->fs_info->block_min_order, > inode->root->fs_info->block_max_order); > -#endif > } > > void btrfs_calculate_block_csum_folio(struct btrfs_fs_info *fs_info, > diff --git a/fs/btrfs/defrag.c b/fs/btrfs/defrag.c > index 7e2db5d3a4d4c..9111308351f82 100644 > --- a/fs/btrfs/defrag.c > +++ b/fs/btrfs/defrag.c > @@ -859,23 +859,6 @@ static struct folio *defrag_prepare_one_folio(struct btrfs_inode *inode, pgoff_t > if (IS_ERR(folio)) > return folio; > > - /* > - * Since we can defragment files opened read-only, we can encounter > - * transparent huge pages here (see CONFIG_READ_ONLY_THP_FOR_FS). > - * > - * The IO for such large folios is not fully tested, thus return > - * an error to reject such folios unless it's an experimental build. > - * > - * Filesystem transparent huge pages are typically only used for > - * executables that explicitly enable them, so this isn't very > - * restrictive. > - */ > - if (!IS_ENABLED(CONFIG_BTRFS_EXPERIMENTAL) && folio_test_large(folio)) { > - folio_unlock(folio); > - folio_put(folio); > - return ERR_PTR(-ETXTBSY); > - } > - > ret = set_folio_extent_mapped(folio); > if (ret < 0) { > folio_unlock(folio);