linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* Proper way to copy de-compressed data into a bio, in folio style?
@ 2025-03-31  8:15 Qu Wenruo
  2025-04-03 17:44 ` Matthew Wilcox
  0 siblings, 1 reply; 3+ messages in thread
From: Qu Wenruo @ 2025-03-31  8:15 UTC (permalink / raw)
  To: Linux Memory Management List, linux-block@vger.kernel.org,
	linux-fsdevel, linux-btrfs

Hi,

The seemingly easy question has some very interesting extra requirements:

1. The bio contains contig file map folios
    The folios may be large.
    So page_offset() on bv_page (using single-page bvec) is no longer
    reliable, one has to call page_pgoff() instead.

2. The data may not cover the bio range
    So we need some range comparison and skip if the data range doesn't
    cover the bio range.

3. The bio may have been advanced
    E.g. previous de-compressed range has been copied, but the remaining
    part still needs to be fulfilled.

    And we need to use the bv_page's file offset to calculate the real
    beginning of the range to copy.

The current btrfs code is doing single page bvec iteration, and handling
point 2 and 3 well.
(btrfs_decompress_buf2page() in fs/btrfs/compression.c)

Point 1 was not causing problem until the incoming large data folio
support, and can be easily fixed with page_pgoff() convertion.


But since we're here, I'm also wondering can we do it better with a
folio or multi-page bvec way?

The current folio bio iteration helper can only start from the beginning
of a bio (bio_for_each_folio_all() and bio_first_folio()), thus it's not
a good fit for point 3.

On the other hand, I'm having some internal code to convert a bio_vec
into a folio and offset inside the folio already.
Thus I'm wondering can we provide something like bio_for_each_folio()?
Or is it too niche that only certain fs can benefit from?

Thanks,
Qu


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-04-04  6:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-31  8:15 Proper way to copy de-compressed data into a bio, in folio style? Qu Wenruo
2025-04-03 17:44 ` Matthew Wilcox
2025-04-04  6:16   ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).