Example #1
0
void put_page(struct page *page)
{
	if (unlikely(PageCompound(page)))
		put_compound_page(page);
	else if (put_page_testzero(page))
		__page_cache_release(page);
}
Example #2
0
static void __put_compound_page(struct page *page)
{
	compound_page_dtor *dtor;

	__page_cache_release(page);
	dtor = get_compound_page_dtor(page);
	(*dtor)(page);
}
Example #3
0
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);
}
Example #4
0
File: swap.c Project: Lyude/linux
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);
}
Example #5
0
void put_page(struct page *page)
{
	if (unlikely(PageCompound(page))) {
		page = (struct page *)page_private(page);
		if (put_page_testzero(page)) {
			void (*dtor)(struct page *page);

			dtor = (void (*)(struct page *))page[1].mapping;
			(*dtor)(page);
		}
		return;
	}
	if (put_page_testzero(page))
		__page_cache_release(page);
}
Example #6
0
void put_page(struct page *page)
{
#ifdef CONFIG_OXNAS_FAST_READS_AND_WRITES
	if (PageIncoherentSendfile(page)) {
		fast_put(page);
	} else {
#endif // CONFIG_OXNAS_FAST_READS_AND_WRITES
		if (unlikely(PageCompound(page))) {
			put_compound_page(page);
		} else if (put_page_testzero(page)) {
			__page_cache_release(page);
		}
#ifdef CONFIG_OXNAS_FAST_READS_AND_WRITES
	}
#endif // CONFIG_OXNAS_FAST_READS_AND_WRITES
}
Example #7
0
static void __put_single_page(struct page *page)
{
	__page_cache_release(page);
	free_hot_cold_page(page, 0);
}
Example #8
0
File: swap.c Project: Lyude/linux
static void __put_single_page(struct page *page)
{
	__page_cache_release(page);
	free_unref_page(page);
}