|
@@ -961,6 +961,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;
|