if (throttle_direct_reclaim(sc.gfp_mask, zonelist, nodemask))
return 1;
+ current->reclaim_state = &sc.reclaim_state;
trace_mm_vmscan_direct_reclaim_begin(order, sc.gfp_mask);
nr_reclaimed = do_try_to_free_pages(zonelist, &sc);
trace_mm_vmscan_direct_reclaim_end(nr_reclaimed);
+ current->reclaim_state = NULL;
return nr_reclaimed;
}
};
unsigned long lru_pages;
+ current->reclaim_state = &sc.reclaim_state;
sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
(GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK);
trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed);
+ current->reclaim_state = NULL;
*nr_scanned = sc.nr_scanned;
+
return sc.nr_reclaimed;
}
.may_shrinkslab = 1,
};
+ current->reclaim_state = &sc.reclaim_state;
/*
* Unlike direct reclaim via alloc_pages(), memcg's reclaim doesn't
* take care of from where we get pages. So the node where we start the
psi_memstall_leave(&pflags);
trace_mm_vmscan_memcg_reclaim_end(nr_reclaimed);
+ current->reclaim_state = NULL;
return nr_reclaimed;
}