File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -2287,8 +2287,8 @@ static unsigned long collect_longterm_unpinnable_folios(
2287
2287
struct pages_or_folios * pofs )
2288
2288
{
2289
2289
unsigned long collected = 0 ;
2290
- bool drain_allow = true;
2291
2290
struct folio * folio ;
2291
+ int drained = 0 ;
2292
2292
long i = 0 ;
2293
2293
2294
2294
for (folio = pofs_get_folio (pofs , i ); folio ;
@@ -2307,10 +2307,17 @@ static unsigned long collect_longterm_unpinnable_folios(
2307
2307
continue ;
2308
2308
}
2309
2309
2310
- if (drain_allow && folio_ref_count (folio ) !=
2311
- folio_expected_ref_count (folio ) + 1 ) {
2310
+ if (drained == 0 &&
2311
+ folio_ref_count (folio ) !=
2312
+ folio_expected_ref_count (folio ) + 1 ) {
2313
+ lru_add_drain ();
2314
+ drained = 1 ;
2315
+ }
2316
+ if (drained == 1 &&
2317
+ folio_ref_count (folio ) !=
2318
+ folio_expected_ref_count (folio ) + 1 ) {
2312
2319
lru_add_drain_all ();
2313
- drain_allow = false ;
2320
+ drained = 2 ;
2314
2321
}
2315
2322
2316
2323
if (!folio_isolate_lru (folio ))
You can’t perform that action at this time.
0 commit comments