在 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 [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
