-
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