• Michal Hocko's avatar
    mm, hugetlb: further simplify hugetlb allocation API · 0c397dae
    Michal Hocko authored
    Hugetlb allocator has several layer of allocation functions depending
    and the purpose of the allocation.  There are two allocators depending
    on whether the page can be allocated from the page allocator or we need
    a contiguous allocator.  This is currently opencoded in
    alloc_fresh_huge_page which is the only path that might allocate giga
    pages which require the later allocator.  Create alloc_fresh_huge_page
    which hides this implementation detail and use it in all callers which
    hardcoded the buddy allocator path (__hugetlb_alloc_buddy_huge_page).
    This shouldn't introduce any funtional change because both migration and
    surplus allocators exlude giga pages explicitly.
    
    While we are at it let's do some renaming.  The current scheme is not
    consistent and overly painfull to read and understand.  Get rid of
    prefix underscores from most functions.  There is no real reason to make
    names longer.
    
    * alloc_fresh_huge_page is the new layer to abstract underlying
      allocator
    * __hugetlb_alloc_buddy_huge_page becomes shorter and neater
      alloc_buddy_huge_page.
    * Former alloc_fresh_huge_page becomes alloc_pool_huge_page because we put
      the new page directly to the pool
    * alloc_surplus_huge_page can drop the opencoded prep_new_huge_page code
      as it uses alloc_fresh_huge_page now
    * others lose their excessive prefix underscores to make names shorter
    
    [dan.carpenter@oracle.com: fix double unlock bug in alloc_surplus_huge_page()]
      Link: http://lkml.kernel.org/r/20180109200559.g3iz5kvbdrz7yydp@mwanda
    Link: http://lkml.kernel.org/r/20180103093213.26329-6-mhocko@kernel.orgSigned-off-by: default avatarMichal Hocko <mhocko@suse.com>
    Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Andrea Reale <ar@linux.vnet.ibm.com>
    Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Zi Yan <zi.yan@cs.rutgers.edu>
    Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0c397dae
hugetlb.c 130 KB