Re: [PATCH] mm/gup: fix always draining LRU caches in collect_longterm_unpinnable_folios()
"David Hildenbrand (Arm)" <[email protected]> Mon, 3 Aug 2026 11:01:54 +0200
| Newsgroups | org.kvack.linux-mm,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On 7/31/26 22:27, David Hildenbrand (Arm) wrote: > folio_may_be_lru_cached() is currently only true for small folios, and > for small folios FOLL_PIN adds GUP_PIN_COUNTING_BIAS references instead > of 1 in try_grab_folio()/try_grab_folio_fast(). > > Consequently, our > > folio_ref_count(folio) != folio_expected_ref_count(folio) + 1 > > check in collect_longterm_unpinnable_folios() will currently always > identify "reference mismatch" and first drain the local LRU cache to then > drain the LRU cache on all CPUs, as collect_longterm_unpinnable_folios() > is really called after pinning the folios with FOLL_PIN. > > Add a comment because the current code is not quite intuitive: we used to > drain only to make sure the folio_isolate_lru() would succeed. But then we > also started draining to make later migration more reliable. > > We'll refactor that code soon a bit, to also make it usable in other > context where we really want to remove any references from LRU caches. > > Let's add CC stable, because having an easy way for excessive LRU cache > draining on all CPUs does not sound right. In common scenarios we > don't expect to every have to drain. Stumbling over this: s/every/ever/ Thanks for the review Hugh! -- Cheers, David