mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Tal Zussman <tz2294@columbia.edu>,
	David Sterba <dsterba@suse.com>, Chris Mason <mason@kernel.org>
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 05/10] btrfs: convert heuristic_collect_sample() to use folios
Date: Mon, 7 Sep 2026 16:14:34 +0930	[thread overview]
Message-ID: <2901102a-2688-485f-8cc5-016b3e1ecbc6@gmx.com> (raw)
In-Reply-To: <20260906-btrfs-folio-conversions-v1-5-834b9d7b06f5@columbia.edu>



在 2026/9/7 07:59, Tal Zussman 写道:
> Convert the sampling loop to folios. This removes the last caller of
> find_get_page() in btrfs and saves a call to compound_head() per sampled
> page. Document that the lookup is not supposed to fail with an ASSERT().
> 
> Signed-off-by: Tal Zussman <tz2294@columbia.edu>

Reviewed-by: Qu Wenruo <wqu@suse.com>

Although the existing code doesn't looks particularly well, e.g. it's 
still fully based on page index, and not handling large folios correctly 
that well.

E.g. if we hit a large folio, we can handle the whole range inside the 
folio in one go, without the need to grab example pages by pages.

But that's for future improvement, and shouldn't bother your page->folio 
interface change.

Thanks,
Qu
> ---
>   fs/btrfs/compression.c | 10 ++++++----
>   1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index 979b2ffbd8fc..fa8b92592321 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -1488,7 +1488,7 @@ static bool sample_repeated_patterns(struct heuristic_ws *ws)
>   static void heuristic_collect_sample(struct inode *inode, u64 start, u64 end,
>   				     struct heuristic_ws *ws)
>   {
> -	struct page *page;
> +	struct folio *folio;
>   	pgoff_t index, index_end;
>   	u32 i, curr_sample_pos;
>   	u8 *in_data;
> @@ -1514,8 +1514,10 @@ static void heuristic_collect_sample(struct inode *inode, u64 start, u64 end,
>   
>   	curr_sample_pos = 0;
>   	while (index < index_end) {
> -		page = find_get_page(inode->i_mapping, index);
> -		in_data = kmap_local_page(page);
> +		folio = filemap_get_folio(inode->i_mapping, index);
> +		ASSERT(!IS_ERR(folio));
> +		in_data = kmap_local_folio(folio,
> +				offset_in_folio(folio, (u64)index << PAGE_SHIFT));
>   		/* Handle case where the start is not aligned to PAGE_SIZE */
>   		i = start % PAGE_SIZE;
>   		while (i < PAGE_SIZE - SAMPLING_READ_SIZE) {
> @@ -1529,7 +1531,7 @@ static void heuristic_collect_sample(struct inode *inode, u64 start, u64 end,
>   			curr_sample_pos += SAMPLING_READ_SIZE;
>   		}
>   		kunmap_local(in_data);
> -		put_page(page);
> +		folio_put(folio);
>   
>   		index++;
>   	}
> 


  reply	other threads:[~2026-09-07  6:44 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-06 22:29 [PATCH 00/10] btrfs: convert some struct page users to folios Tal Zussman
2026-09-06 22:29 ` [PATCH 01/10] btrfs: tests: rename process_page_range() to process_folio_range() Tal Zussman
2026-09-07  6:30   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 02/10] btrfs: tests: convert test_find_delalloc() to use folios Tal Zussman
2026-09-07  6:29   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 03/10] btrfs: tests: use eb folio helpers in extent buffer memory checks Tal Zussman
2026-09-07  6:33   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 04/10] btrfs: convert btrfs_compr_pool_scan() to use folios Tal Zussman
2026-09-07  6:36   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 05/10] btrfs: convert heuristic_collect_sample() " Tal Zussman
2026-09-07  6:44   ` Qu Wenruo [this message]
2026-09-06 22:29 ` [PATCH 06/10] btrfs: fix stale function references in compression comments Tal Zussman
2026-09-07  6:44   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 07/10] btrfs: use folios for reading super blocks from the block device Tal Zussman
2026-09-07  6:51   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 08/10] btrfs: keep the free space cache inode mapping at order 0 Tal Zussman
2026-09-06 23:10   ` Qu Wenruo
2026-09-06 22:29 ` [PATCH 09/10] btrfs: convert struct btrfs_io_ctl to use folios Tal Zussman
2026-09-06 22:29 ` [PATCH 10/10] btrfs: rename io_ctl page helpers to folio helpers Tal Zussman
2026-09-06 23:12   ` Qu Wenruo
2026-09-06 23:20     ` Tal Zussman
2026-09-07  0:23       ` Qu Wenruo
2026-09-07  0:58         ` Tal Zussman

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=2901102a-2688-485f-8cc5-016b3e1ecbc6@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=dsterba@suse.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mason@kernel.org \
    --cc=tz2294@columbia.edu \
    --cc=willy@infradead.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

all inboxes | Powered by JetHome®