diff options
Diffstat (limited to 'fs/btrfs/disk-io.c')
| -rw-r--r-- | fs/btrfs/disk-io.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 7aa9cd36bf1..811d9f918b1 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -962,6 +962,13 @@ static int btree_releasepage(struct page *page, gfp_t gfp_flags)  	tree = &BTRFS_I(page->mapping->host)->io_tree;  	map = &BTRFS_I(page->mapping->host)->extent_tree; +	/* +	 * We need to mask out eg. __GFP_HIGHMEM and __GFP_DMA32 as we're doing +	 * slab allocation from alloc_extent_state down the callchain where +	 * it'd hit a BUG_ON as those flags are not allowed. +	 */ +	gfp_flags &= ~GFP_SLAB_BUG_MASK; +  	ret = try_release_extent_state(map, tree, page, gfp_flags);  	if (!ret)  		return 0;  |