summaryrefslogtreecommitdiff
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2012-02-07 08:59:29 (GMT)
committerIngo Molnar <mingo@elte.hu>2012-02-07 08:59:29 (GMT)
commit290436c9c61ac983b1bd425da67242a4357c7701 (patch)
tree35e1f189b62eb50515600ad607d7fb57fc547870 /fs/btrfs/disk-io.c
parent623ec991ce0e8cd5791bad656c162fa837635907 (diff)
parent62aa2b537c6f5957afd98e29f96897419ed5ebab (diff)
downloadlinux-fsl-qoriq-290436c9c61ac983b1bd425da67242a4357c7701.tar.xz
Merge tag 'v3.3-rc2' into perf/core
Linux 3.3-rc2 Pick up the latest fixes. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 7aa9cd3..811d9f9 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;