mm, hugetlb: remove decrement_hugepage_resv_vma()
Now, Checking condition of decrement_hugepage_resv_vma() and vma_has_reserves() is same, so we can clean-up this function with vma_has_reserves(). Additionally, decrement_hugepage_resv_vma() has only one call site, so we can remove function and embed it into dequeue_huge_page_vma() directly. This patch implement it. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Reviewed-by: Wanpeng Li <liwanp@linux.vnet.ibm.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Acked-by: Hillf Danton <dhillf@gmail.com> Acked-by: Michal Hocko <mhocko@suse.cz> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Rik van Riel <riel@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> 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:
Родитель
72231b03cc
Коммит
a63884e921
31
mm/hugetlb.c
31
mm/hugetlb.c
|
@ -434,25 +434,6 @@ static int is_vma_resv_set(struct vm_area_struct *vma, unsigned long flag)
|
|||
return (get_vma_private_data(vma) & flag) != 0;
|
||||
}
|
||||
|
||||
/* Decrement the reserved pages in the hugepage pool by one */
|
||||
static void decrement_hugepage_resv_vma(struct hstate *h,
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
if (vma->vm_flags & VM_NORESERVE)
|
||||
return;
|
||||
|
||||
if (vma->vm_flags & VM_MAYSHARE) {
|
||||
/* Shared mappings always use reserves */
|
||||
h->resv_huge_pages--;
|
||||
} else if (is_vma_resv_set(vma, HPAGE_RESV_OWNER)) {
|
||||
/*
|
||||
* Only the process that called mmap() has reserves for
|
||||
* private mappings.
|
||||
*/
|
||||
h->resv_huge_pages--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Reset counters to 0 and clear all HPAGE_RESV_* flags */
|
||||
void reset_vma_resv_huge_pages(struct vm_area_struct *vma)
|
||||
{
|
||||
|
@ -466,10 +447,18 @@ static int vma_has_reserves(struct vm_area_struct *vma)
|
|||
{
|
||||
if (vma->vm_flags & VM_NORESERVE)
|
||||
return 0;
|
||||
|
||||
/* Shared mappings always use reserves */
|
||||
if (vma->vm_flags & VM_MAYSHARE)
|
||||
return 1;
|
||||
|
||||
/*
|
||||
* Only the process that called mmap() has reserves for
|
||||
* private mappings.
|
||||
*/
|
||||
if (is_vma_resv_set(vma, HPAGE_RESV_OWNER))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -564,8 +553,8 @@ retry_cpuset:
|
|||
if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
|
||||
page = dequeue_huge_page_node(h, zone_to_nid(zone));
|
||||
if (page) {
|
||||
if (!avoid_reserve)
|
||||
decrement_hugepage_resv_vma(h, vma);
|
||||
if (!avoid_reserve && vma_has_reserves(vma))
|
||||
h->resv_huge_pages--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче