UPSTREAM: mm: allow non-hugetlb large folios to be batch processed
Hugetlb folios still get special treatment, but normal large folios can now be freed by free_unref_folios(). This should have a reasonable performance impact, TBD. Link: https://lkml.kernel.org/r/20240227174254.710559-11-willy@infradead.org Change-Id: I30744524ccac99d969f8369db87dc16c0705cb36 Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Ryan Roberts <ryan.roberts@arm.com> Cc: David Hildenbrand <david@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> (cherry picked from commit f77171d241e379ea93448a53d58104191e02135c) Bug: 420771453 Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
This commit is contained in:
committed by
Kalesh Singh
parent
f17c4db9cf
commit
a7a880e6de
@@ -1000,12 +1000,13 @@ void folios_put_refs(struct folio_batch *folios, unsigned int *refs)
|
||||
if (!folio_ref_sub_and_test(folio, nr_refs))
|
||||
continue;
|
||||
|
||||
if (folio_test_large(folio)) {
|
||||
/* hugetlb has its own memcg */
|
||||
if (folio_test_hugetlb(folio)) {
|
||||
if (lruvec) {
|
||||
unlock_page_lruvec_irqrestore(lruvec, flags);
|
||||
lruvec = NULL;
|
||||
}
|
||||
__folio_put_large(folio);
|
||||
free_huge_folio(folio);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user