static void __put_compound_page(struct page *page) { compound_page_dtor *dtor; __page_cache_release(page); dtor = get_compound_page_dtor(page); (*dtor)(page); }
static void put_compound_page(struct page *page) { page = compound_head(page); if (put_page_testzero(page)) { compound_page_dtor *dtor; dtor = get_compound_page_dtor(page); (*dtor)(page); } }
static void __put_compound_page(struct page *page) { compound_page_dtor *dtor; __page_cache_release(page); dtor = get_compound_page_dtor(page); if (!PageHuge(page)) BUG_ON(dtor != free_compound_page); (*dtor)(page); }
static void __put_compound_page(struct page *page) { compound_page_dtor *dtor; /* * __page_cache_release() is supposed to be called for thp, not for * hugetlb. This is because hugetlb page does never have PageLRU set * (it's never listed to any LRU lists) and no memcg routines should * be called for hugetlb (it has a separate hugetlb_cgroup.) */ if (!PageHuge(page)) __page_cache_release(page); dtor = get_compound_page_dtor(page); (*dtor)(page); }