• Andrew Morton's avatar
    [PATCH] hugetlb cleanups · 6c5ceacc
    Andrew Morton authored
    A rollup of Bill's 11-patch series which replaces hugetlb's custom
    inode with a bare radix tree.  Reviewed and acked by Rohit.
    
    - revert doublefreeing patch
    
    - Put set_new_inode() and the inode allocation loop into an
      alloc_key(), and introduce a new opaque type "struct hugetlb_key".
    
    - Wrap the release path in alloc_shared_hugetlb_pages() with a
      release_key() function that handles the release.
    
    - Wrap hugetlb_prefault() with prefault_key() in order to isolate the
      dependency on inodes for prefaulting the hugetlb vma.
    
    - Replaces the usage of inode->i_writecount as a flag marking keys
      busy with a boolean flag field in struct htlbpagekey, and removes the
      last dependency of alloc_shared_hugetlb_pages() on struct inode.
    
    - Remove the last direct usage of struct inode within the hugetlb
      functions.
    
    - Removes many direct usages of struct inode within the key
      manipulation API in exchange for passing references to the key
      structure itself.
    
    - Expand out prefault_key() into its hugetlb_prefault() component,
      but substitute stubs to abstract out inode access.
    
    - Move uid/gid/mode/size fields used in struct inode and the checks
      on them into key management code and structures.
    
    - Substitute direct usage of radix trees for inodes, and removes the
      custom-allocated inodes.
    
    - Wrap up the release path by adding proper refcounting of keys.
    6c5ceacc
hugetlbpage.c 15.2 KB