On Mon 06-12-21 11:45:54, David Hildenbrand wrote: > > This doesn't seen complete. Slab shrinkers are used in the reclaim > > context. Previously offline nodes could be onlined later and this would > > lead to NULL ptr because there is no hook to allocate new shrinker > > infos. This would be also really impractical because this would have to > > update all existing memcgs... > > Instead of going through the trouble of updating... > > ... maybe just keep for_each_node() and check if the target node is > offline. If it's offline, just allocate from the first online node. > After all, we're not using __GFP_THISNODE, so there are no guarantees > either way ... This looks like another way to paper over a deeper underlying problem IMHO. Fundamentally we have a problem that some pgdata are not allocated and that causes a lot of headache. Not to mention that node_online is just adding to a confusion because it doesn't really tell anything about the logical state of the node. I think we really should get rid of this approach rather than play a whack-a-mole. We should really drop all notion of node_online and instead allocate pgdat for each possible node. Arch specific code should make sure that zone lists are properly initialized. -- Michal Hocko SUSE Labs