From: Kairui Song <kasong@tencent.com>
folio_index is only needed for mixed usage of page cache and swap
cache, for pure page cache usage, the caller can just use
folio->index instead.
It can't be a swap cache folio here. Swap mapping may only call into fs
through `swap_rw` and that is not supported for btrfs. So just drop it
and use folio->index instead.
Signed-off-by: Kairui Song <kasong@tencent.com>
Cc: Chris Mason <clm@fb.com> (maintainer:BTRFS FILE SYSTEM)
Cc: Josef Bacik <josef@toxicpanda.com> (maintainer:BTRFS FILE SYSTEM)
Cc: David Sterba <dsterba@suse.com> (maintainer:BTRFS FILE SYSTEM)
Cc: linux-btrfs@vger.kernel.org (open list:BTRFS FILE SYSTEM)
Signed-off-by: Kairui Song <kasong@tencent.com>
---
fs/btrfs/extent_io.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 197f5e51c474..e08b50504d13 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3509,7 +3509,7 @@ static void btree_clear_folio_dirty_tag(struct folio *folio)
xa_lock_irq(&folio->mapping->i_pages);
if (!folio_test_dirty(folio))
__xa_clear_mark(&folio->mapping->i_pages,
- folio_index(folio), PAGECACHE_TAG_DIRTY);
+ folio->index, PAGECACHE_TAG_DIRTY);
xa_unlock_irq(&folio->mapping->i_pages);
}
--
2.49.0
在 2025/4/28 04:29, Kairui Song 写道: > From: Kairui Song <kasong@tencent.com> > > folio_index is only needed for mixed usage of page cache and swap > cache, for pure page cache usage, the caller can just use > folio->index instead. The patch looks good to me, but I'm afraid the next commit message is not accurate. > > It can't be a swap cache folio here. Swap mapping may only call into fs > through `swap_rw` and that is not supported for btrfs. So just drop it > and use folio->index instead. Btrfs supports swap file, it's just not through the swap_rw() callback. In this particular case, the folio belongs to the metadata (btree) inode, thus it will never be swap cache folio. With that changed, it looks good to me. Reviewed-by: Qu Wenruo <wqu@suse.com> Thanks, Qu > > Signed-off-by: Kairui Song <kasong@tencent.com> > Cc: Chris Mason <clm@fb.com> (maintainer:BTRFS FILE SYSTEM) > Cc: Josef Bacik <josef@toxicpanda.com> (maintainer:BTRFS FILE SYSTEM) > Cc: David Sterba <dsterba@suse.com> (maintainer:BTRFS FILE SYSTEM) > Cc: linux-btrfs@vger.kernel.org (open list:BTRFS FILE SYSTEM) > Signed-off-by: Kairui Song <kasong@tencent.com> > --- > fs/btrfs/extent_io.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c > index 197f5e51c474..e08b50504d13 100644 > --- a/fs/btrfs/extent_io.c > +++ b/fs/btrfs/extent_io.c > @@ -3509,7 +3509,7 @@ static void btree_clear_folio_dirty_tag(struct folio *folio) > xa_lock_irq(&folio->mapping->i_pages); > if (!folio_test_dirty(folio)) > __xa_clear_mark(&folio->mapping->i_pages, > - folio_index(folio), PAGECACHE_TAG_DIRTY); > + folio->index, PAGECACHE_TAG_DIRTY); > xa_unlock_irq(&folio->mapping->i_pages); > } >
On Mon, Apr 28, 2025 at 8:55 AM Qu Wenruo <quwenruo.btrfs@gmx.com> wrote: > > > > 在 2025/4/28 04:29, Kairui Song 写道: > > From: Kairui Song <kasong@tencent.com> > > > > folio_index is only needed for mixed usage of page cache and swap > > cache, for pure page cache usage, the caller can just use > > folio->index instead. > > The patch looks good to me, but I'm afraid the next commit message is > not accurate. > > > > > It can't be a swap cache folio here. Swap mapping may only call into fs > > through `swap_rw` and that is not supported for btrfs. So just drop it > > and use folio->index instead. > Thanks for the review. > Btrfs supports swap file, it's just not through the swap_rw() callback. Right, I just meant btrfs is not using `swap_rw`. Of course it supports swap files. Let me update the commit message a bit to clarify that. > > In this particular case, the folio belongs to the metadata (btree) > inode, thus it will never be swap cache folio. > > With that changed, it looks good to me. > > Reviewed-by: Qu Wenruo <wqu@suse.com> > > Thanks, > Qu > > > > > Signed-off-by: Kairui Song <kasong@tencent.com> > > Cc: Chris Mason <clm@fb.com> (maintainer:BTRFS FILE SYSTEM) > > Cc: Josef Bacik <josef@toxicpanda.com> (maintainer:BTRFS FILE SYSTEM) > > Cc: David Sterba <dsterba@suse.com> (maintainer:BTRFS FILE SYSTEM) > > Cc: linux-btrfs@vger.kernel.org (open list:BTRFS FILE SYSTEM) > > Signed-off-by: Kairui Song <kasong@tencent.com> > > --- > > fs/btrfs/extent_io.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c > > index 197f5e51c474..e08b50504d13 100644 > > --- a/fs/btrfs/extent_io.c > > +++ b/fs/btrfs/extent_io.c > > @@ -3509,7 +3509,7 @@ static void btree_clear_folio_dirty_tag(struct folio *folio) > > xa_lock_irq(&folio->mapping->i_pages); > > if (!folio_test_dirty(folio)) > > __xa_clear_mark(&folio->mapping->i_pages, > > - folio_index(folio), PAGECACHE_TAG_DIRTY); > > + folio->index, PAGECACHE_TAG_DIRTY); > > xa_unlock_irq(&folio->mapping->i_pages); > > } > > > >
On Mon, Apr 28, 2025 at 02:59:04AM +0800, Kairui Song wrote: > From: Kairui Song <kasong@tencent.com> > > folio_index is only needed for mixed usage of page cache and swap > cache, for pure page cache usage, the caller can just use > folio->index instead. > > It can't be a swap cache folio here. Swap mapping may only call into fs > through `swap_rw` and that is not supported for btrfs. So just drop it > and use folio->index instead. > > Signed-off-by: Kairui Song <kasong@tencent.com> > Cc: Chris Mason <clm@fb.com> (maintainer:BTRFS FILE SYSTEM) > Cc: Josef Bacik <josef@toxicpanda.com> (maintainer:BTRFS FILE SYSTEM) > Cc: David Sterba <dsterba@suse.com> (maintainer:BTRFS FILE SYSTEM) > Cc: linux-btrfs@vger.kernel.org (open list:BTRFS FILE SYSTEM) > Signed-off-by: Kairui Song <kasong@tencent.com> Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
© 2016 - 2025 Red Hat, Inc.