Skip to content
  • Mina Almasry's avatar
    hugetlb: region_chg provides only cache entry · 5c911954
    Mina Almasry authored
    Current behavior is that region_chg provides both a cache entry in
    resv->region_cache, AND a placeholder entry in resv->regions.
    region_add first tries to use the placeholder, and if it finds that the
    placeholder has been deleted by a racing region_del call, it uses the
    cache entry.
    
    This behavior is completely unnecessary and is removed in this patch for
    a couple of reasons:
    
    1. region_add needs to either find a cached file_region entry in
       resv->region_cache, or find an entry in resv->regions to expand. It
       does not need both.
    
    2. region_chg adding a placeholder entry in resv->regions opens up
       a possible race with region_del, where region_chg adds a placeholder
       region in resv->regions, and this region is deleted by a racing call
       to region_del during region_chg execution or before region_add is
       called. Removing the race makes the code easier to reason about and
       maintain.
    
    In addition, a follow up patch in another series that disables region
    coalescing, which would be further complicated if the race with
    region_del exists.
    
    Link: http://lkml.kernel.org/r/20190919200428.188797-2-almasrymina@google.com
    
    
    Signed-off-by: default avatarMina Almasry <almasrymina@google.com>
    Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Greg Thelen <gthelen@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5c911954