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

mm: reimplement folio_order() and folio_nr_pages()

Instead of calling compound_order() and compound_nr_pages(), use the folio
directly.  Saves 1905 bytes from mm/filemap.o due to folio_test_large()
now being a cheaper check than PageHead().

Link: https://lkml.kernel.org/r/20220902194653.1739778-4-willy@infradead.org


Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 379708ff
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -729,7 +729,9 @@ static inline unsigned int compound_order(struct page *page)
 */
static inline unsigned int folio_order(struct folio *folio)
{
	return compound_order(&folio->page);
	if (!folio_test_large(folio))
		return 0;
	return folio->_folio_order;
}

#include <linux/huge_mm.h>
@@ -1659,7 +1661,13 @@ static inline void set_page_links(struct page *page, enum zone_type zone,
 */
static inline long folio_nr_pages(struct folio *folio)
{
	return compound_nr(&folio->page);
	if (!folio_test_large(folio))
		return 1;
#ifdef CONFIG_64BIT
	return folio->_folio_nr_pages;
#else
	return 1L << folio->_folio_order;
#endif
}

/**