[PATCH 2/6] btrfs: drop usage of folio_index

Kairui Song posted 6 patches 7 months, 3 weeks ago
There is a newer version of this series
[PATCH 2/6] btrfs: drop usage of folio_index
Posted by Kairui Song 7 months, 3 weeks ago
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
Re: [PATCH 2/6] btrfs: drop usage of folio_index
Posted by Qu Wenruo 7 months, 3 weeks ago

在 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);
>   }
>   
Re: [PATCH 2/6] btrfs: drop usage of folio_index
Posted by Kairui Song 7 months, 3 weeks ago
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);
> >   }
> >
>
>
Re: [PATCH 2/6] btrfs: drop usage of folio_index
Posted by Matthew Wilcox 7 months, 3 weeks ago
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>