aboutsummaryrefslogtreecommitdiffstats
path: root/lib/radix-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/radix-tree.c')
-rw-r--r--lib/radix-tree.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index 519d3f00ef9e..6b26f9d39800 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -98,7 +98,8 @@ radix_tree_node_alloc(struct radix_tree_root *root)
98 struct radix_tree_node *ret; 98 struct radix_tree_node *ret;
99 gfp_t gfp_mask = root_gfp_mask(root); 99 gfp_t gfp_mask = root_gfp_mask(root);
100 100
101 ret = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask); 101 ret = kmem_cache_alloc(radix_tree_node_cachep,
102 set_migrateflags(gfp_mask, __GFP_RECLAIMABLE));
102 if (ret == NULL && !(gfp_mask & __GFP_WAIT)) { 103 if (ret == NULL && !(gfp_mask & __GFP_WAIT)) {
103 struct radix_tree_preload *rtp; 104 struct radix_tree_preload *rtp;
104 105
@@ -142,7 +143,8 @@ int radix_tree_preload(gfp_t gfp_mask)
142 rtp = &__get_cpu_var(radix_tree_preloads); 143 rtp = &__get_cpu_var(radix_tree_preloads);
143 while (rtp->nr < ARRAY_SIZE(rtp->nodes)) { 144 while (rtp->nr < ARRAY_SIZE(rtp->nodes)) {
144 preempt_enable(); 145 preempt_enable();
145 node = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask); 146 node = kmem_cache_alloc(radix_tree_node_cachep,
147 set_migrateflags(gfp_mask, __GFP_RECLAIMABLE));
146 if (node == NULL) 148 if (node == NULL)
147 goto out; 149 goto out;
148 preempt_disable(); 150 preempt_disable();