在 2024/8/22 12:35, Matthew Wilcox 写道:
On Thu, Aug 22, 2024 at 09:37:02AM +0800, Li Zetao wrote:
  static struct extent_buffer *get_next_extent_buffer(
-               const struct btrfs_fs_info *fs_info, struct page *page, u64 
bytenr)
+               const struct btrfs_fs_info *fs_info, struct folio *folio, u64 
bytenr)
  {
        struct extent_buffer *gang[GANG_LOOKUP_SIZE];
        struct extent_buffer *found = NULL;
-       u64 page_start = page_offset(page);
-       u64 cur = page_start;
+       u64 folio_start = folio_pos(folio);
+       u64 cur = folio_start;

-       ASSERT(in_range(bytenr, page_start, PAGE_SIZE));
+       ASSERT(in_range(bytenr, folio_start, PAGE_SIZE));
        lockdep_assert_held(&fs_info->buffer_lock);

-       while (cur < page_start + PAGE_SIZE) {
+       while (cur < folio_start + PAGE_SIZE) {

Presumably we want to support large folios in btrfs at some point?
I certainly want to remove CONFIG_READ_ONLY_THP_FOR_FS soon and that'll
be a bit of a regression for btrfs if it doesn't have large folio
support.  So shouldn't we also s/PAGE_SIZE/folio_size(folio)/ ?

Forgot to mention that, this function is only called inside subpage
routine (sectorsize < PAGE_SIZE and nodesize, aka metadata size < PAGE_SIZE)

So PAGE_SIZE is correct. Going folio_size() is only wasting CPU time,
but if you do not feel safe, we can add extra ASSERT() to make sure it's
only called for subpage routine.

Thanks,
Qu


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to