Changes since v2: 1) optimize away a few more locked ops in the get_page/put_page hugetlbfs and slab paths (see 3/8 and 4/8). 3/8 is the least trivial addition to the series as we now are running PageSlab and PageHeadHuge on random page structure without holding any reference count on this. A smp_rmb() if any of the two checks succeeds is what is supposed to make it safe doing so and it's lighter weight than get_page_unless_zero (hence the supposed optimization out of it). 3/8 makes no difference whatsoever to the speed of the THP case. It's unclear if 3/8 is worth it but it seems every bit is affecting performance for directio over hugetlbfs with >8GB/sec storage devices so I thought of trying it. 4/8 is quite self explanatory and it removes some smp_rmb which is not needed with the current layout of the struct page. 2) two nice cleanups from Andrew 3) Removed the PageHeadHuge export as it's not needed right now Andrea Arcangeli (6): mm: hugetlbfs: fix hugetlbfs optimization mm: hugetlb: use get_page_foll in follow_hugetlb_page mm: hugetlbfs: move the put/get_page slab and hugetlbfs optimization in a faster path mm: thp: optimize compound_trans_huge mm: tail page refcounting optimization for slab and hugetlbfs mm/hugetlb.c: defer PageHeadHuge() symbol export Andrew Morton (2): mm/hugetlb.c: simplify PageHeadHuge() and PageHuge() mm/swap.c: reorganize put_compound_page() include/linux/huge_mm.h | 23 ++++ include/linux/mm.h | 32 +++++- mm/hugetlb.c | 20 +++- mm/internal.h | 3 +- mm/swap.c | 284 +++++++++++++++++++++++++++++------------------- 5 files changed, 240 insertions(+), 122 deletions(-) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>