/* Clear __GFP_FS when allocating the page to avoid recursion into the fs and deadlock against the caller's locked page.  */
struct page* grab_cache_page_nowait(struct address_space *mapping, pgoff_t index)
/* Clear __GFP_FS when allocating the page to avoid recursion into the fs and deadlock against the caller's locked page.  */
struct page* grab_cache_page_nowait(struct address_space *mapping, pgoff_t index)
{
	struct page *page = find_get_page(mapping, index);
	if (page) {
		if (trylock_page(page))
			return page;
		page_cache_release(page);
		return NULL;
	}
	page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~__GFP_FS);
	if (page && add_to_page_cache_lru(page, mapping, index, GFP_NOFS)) {
		page_cache_release(page);
		page = NULL;
	}
	return page;
}