mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
mm, hugetlb: move up the code which check availability of free huge page
In this time we are holding a hugetlb_lock, so hstate values can't be changed. If we don't have any usable free huge page in this time, we don't need to proceed with the processing. So move this code up. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Acked-by: Michal Hocko <mhocko@suse.cz> Reviewed-by: Wanpeng Li <liwanp@linux.vnet.ibm.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Acked-by: Hillf Danton <dhillf@gmail.com> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Rik van Riel <riel@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Hugh Dickins <hughd@google.com> Cc: Davidlohr Bueso <davidlohr.bueso@hp.com> Cc: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
72457c0a05
commit
9966c4bbb1
10
mm/hugetlb.c
10
mm/hugetlb.c
@ -539,10 +539,6 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
|
||||
struct zoneref *z;
|
||||
unsigned int cpuset_mems_cookie;
|
||||
|
||||
retry_cpuset:
|
||||
cpuset_mems_cookie = get_mems_allowed();
|
||||
zonelist = huge_zonelist(vma, address,
|
||||
htlb_alloc_mask, &mpol, &nodemask);
|
||||
/*
|
||||
* A child process with MAP_PRIVATE mappings created by their parent
|
||||
* have no page reserves. This check ensures that reservations are
|
||||
@ -556,6 +552,11 @@ retry_cpuset:
|
||||
if (avoid_reserve && h->free_huge_pages - h->resv_huge_pages == 0)
|
||||
goto err;
|
||||
|
||||
retry_cpuset:
|
||||
cpuset_mems_cookie = get_mems_allowed();
|
||||
zonelist = huge_zonelist(vma, address,
|
||||
htlb_alloc_mask, &mpol, &nodemask);
|
||||
|
||||
for_each_zone_zonelist_nodemask(zone, z, zonelist,
|
||||
MAX_NR_ZONES - 1, nodemask) {
|
||||
if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
|
||||
@ -574,7 +575,6 @@ retry_cpuset:
|
||||
return page;
|
||||
|
||||
err:
|
||||
mpol_cond_put(mpol);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user