On Mon 12-06-17 13:53:51, Vlastimil Babka wrote: > On 06/12/2017 11:06 AM, Michal Hocko wrote: [...] > > -/* Movability of hugepages depends on migration support. */ > > -static inline gfp_t htlb_alloc_mask(struct hstate *h) > > +static struct page *dequeue_huge_page_node(struct hstate *h, int nid) > > { > > - if (hugepages_treat_as_movable || hugepage_migration_supported(h)) > > - return GFP_HIGHUSER_MOVABLE; > > - else > > - return GFP_HIGHUSER; > > + if (nid != NUMA_NO_NODE) > > + return dequeue_huge_page_node_exact(h, nid); > > + > > + return dequeue_huge_page_nodemask(h, nid, NULL); > > This with nid == NUMA_NO_NODE will break at node_zonelist(nid, > gfp_mask); in dequeue_huge_page_nodemask(). I guess just use the local > node as preferred. You are right. Anyway I have a patch to remove this helper altogether. > > -retry_cpuset: > > - cpuset_mems_cookie = read_mems_allowed_begin(); > > - gfp_mask = htlb_alloc_mask(h); > > - nid = huge_node(vma, address, gfp_mask, &mpol, &nodemask); > > - zonelist = node_zonelist(nid, gfp_mask); > > - > > - for_each_zone_zonelist_nodemask(zone, z, zonelist, > > - MAX_NR_ZONES - 1, nodemask) { > > - if (cpuset_zone_allowed(zone, gfp_mask)) { > > - page = dequeue_huge_page_node(h, zone_to_nid(zone)); > > - if (page) { > > - if (avoid_reserve) > > - break; > > - if (!vma_has_reserves(vma, chg)) > > - break; > > - > > - SetPagePrivate(page); > > - h->resv_huge_pages--; > > - break; > > - } > > - } > > + nid = huge_node(vma, address, htlb_alloc_mask(h), &mpol, &nodemask); > > + page = dequeue_huge_page_nodemask(h, nid, nodemask); > > + if (page && !(avoid_reserve || (!vma_has_reserves(vma, chg)))) { > > Ugh that's hard to parse. > What about: if (page && !avoid_reserve && vma_has_reserves(...)) ? Yeah, I have just translated the two breaks into a single condition without scratching my head to much. If you think that this face of De Morgan is nicer I can use it. -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>