• David Gibson's avatar
    [PATCH] Hugetlb: Copy on Write support · 1e8f889b
    David Gibson authored
    Implement copy-on-write support for hugetlb mappings so MAP_PRIVATE can be
    supported.  This helps us to safely use hugetlb pages in many more
    applications.  The patch makes the following changes.  If needed, I also have
    it broken out according to the following paragraphs.
    
    1. Add a pair of functions to set/clear write access on huge ptes.  The
       writable check in make_huge_pte is moved out to the caller for use by COW
       later.
    
    2. Hugetlb copy-on-write requires special case handling in the following
       situations:
    
       - copy_hugetlb_page_range() - Copied pages must be write protected so
         a COW fault will be triggered (if necessary) if those pages are written
         to.
    
       - find_or_alloc_huge_page() - Only MAP_SHARED pages are added to the
         page cache.  MAP_PRIVATE pages still need to be locked however.
    
    3. Provide hugetlb_cow() and calls from hugetlb_fault() and
       hugetlb_no_page() which handles the COW fault by making the actual copy.
    
    4. Remove the check in hugetlbfs_file_map() so that MAP_PRIVATE mmaps
       will be allowed.  Make MAP_HUGETLB exempt from the depricated VM_RESERVED
       mapping check.
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarAdam Litke <agl@us.ibm.com>
    Cc: William Lee Irwin III <wli@holomorphy.com>
    Cc: "Seth, Rohit" <rohit.seth@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    1e8f889b
inode.c 20.5 KB