Commit 9ee2c086 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Andrew Morton
Browse files

mm/huge_memory: convert split_huge_pages_in_file() to use a folio

Patch series "Remove FGP_HEAD flag".

We have just two users left of the FGP_HEAD flag and both of them are
better off; sometimes startlingly so as a result of conversion to use
folios.


This patch (of 4):

Removes a number of calls to compound_head() and a call to
pagecache_get_page().

Link: https://lkml.kernel.org/r/20221019183332.2802139-1-willy@infradead.org
Link: https://lkml.kernel.org/r/20221019183332.2802139-2-willy@infradead.org


Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent e025ab84
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -3066,28 +3066,28 @@ static int split_huge_pages_in_file(const char *file_path, pgoff_t off_start,
	mapping = candidate->f_mapping;

	for (index = off_start; index < off_end; index += nr_pages) {
		struct page *fpage = pagecache_get_page(mapping, index,
						FGP_ENTRY | FGP_HEAD, 0);
		struct folio *folio = __filemap_get_folio(mapping, index,
						FGP_ENTRY, 0);

		nr_pages = 1;
		if (xa_is_value(fpage) || !fpage)
		if (xa_is_value(folio) || !folio)
			continue;

		if (!is_transparent_hugepage(fpage))
		if (!folio_test_large(folio))
			goto next;

		total++;
		nr_pages = thp_nr_pages(fpage);
		nr_pages = folio_nr_pages(folio);

		if (!trylock_page(fpage))
		if (!folio_trylock(folio))
			goto next;

		if (!split_huge_page(fpage))
		if (!split_folio(folio))
			split++;

		unlock_page(fpage);
		folio_unlock(folio);
next:
		put_page(fpage);
		folio_put(folio);
		cond_resched();
	}