On Fri, Aug 29, 2025 at 08:09:53PM -0700, Andrew Morton wrote:
On Sat, 30 Aug 2025 02:31:02 +0000 Wei Yang richard.weiyang@gmail.com wrote:
The check of is_backed_by_folio() is done on each page.
Directly move pointer to next page instead of increase one and check if it is page size aligned.
Why?
--- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -423,9 +423,8 @@ static void split_pte_mapped_thp(void) /* smap does not show THPs after mremap, use kpageflags instead */ thp_size = 0;
- for (i = 0; i < pagesize * 4; i++)
if (i % pagesize == 0 &&
is_backed_by_folio(&pte_mapped[i], pmd_order, pagemap_fd, kpageflags_fd))
- for (i = 0; i < pagesize * 4; i += pagesize)
if (is_backed_by_folio(&pte_mapped[i], pmd_order, pagemap_fd, kpageflags_fd)) thp_size++;
Looks like we're doing more work. Is there something wrong with the existing code?
Excuse me if I misunderstand the code.
Originally, i iterate from 0 to pagesize * 4 one by one and call is_backed_by_folio() when i is 0, 4096, 8192, 12288.
The change makes i just iterate on 0, 4096, 8192, 12288 and call is_backed_by_folio() respectively.
Current code is not wrong, but not necessary to iterate one by one.