sched: mm: Introduce PF_MEMALLOC_ISOLATE
On arm64, when reserving tag storage for an allocated page, if the tag storage is in use, the tag storage must be migrated before it can be reserved. When doing compaction, the target page for migration can require to have the metadata storage reserved, which leads to those metadata pages being isolated for migration. In rare circumstances, the extra pages being isolated when reserving metadata storage can cross the threshold for too_many_isolated(), leading to an infinite loop in isolate_migratepages_pageblock(). Add the current flag PF_MEMALLOC_ISOLATE, which makes too_many_isolated() ignore the threshold and always false to make forward progress in isolate_migratepages_pageblock(). For consistency, the similarly named function too_many_isolated() called during reclaim has received the same treatment.
Loading
Please register or sign in to comment