Commit 2676a58c authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Ingo Molnar

radix-tree: Disable RCU lockdep checking in radix tree

Because the radix tree is used with many different locking
designs, we cannot do any effective checking without changing
the radix-tree APIs. It might make sense to do this later, but
only if the RCU lockdep checking proves itself sufficiently
valuable.
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: mathieu.desnoyers@polymtl.ca
Cc: josh@joshtriplett.org
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
Cc: Valdis.Kletnieks@vt.edu
Cc: dhowells@redhat.com
LKML-Reference: <1266887105-1528-10-git-send-email-paulmck@linux.vnet.ibm.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent af61b96b
...@@ -364,7 +364,7 @@ static void *radix_tree_lookup_element(struct radix_tree_root *root, ...@@ -364,7 +364,7 @@ static void *radix_tree_lookup_element(struct radix_tree_root *root,
unsigned int height, shift; unsigned int height, shift;
struct radix_tree_node *node, **slot; struct radix_tree_node *node, **slot;
node = rcu_dereference(root->rnode); node = rcu_dereference_raw(root->rnode);
if (node == NULL) if (node == NULL)
return NULL; return NULL;
...@@ -384,7 +384,7 @@ static void *radix_tree_lookup_element(struct radix_tree_root *root, ...@@ -384,7 +384,7 @@ static void *radix_tree_lookup_element(struct radix_tree_root *root,
do { do {
slot = (struct radix_tree_node **) slot = (struct radix_tree_node **)
(node->slots + ((index>>shift) & RADIX_TREE_MAP_MASK)); (node->slots + ((index>>shift) & RADIX_TREE_MAP_MASK));
node = rcu_dereference(*slot); node = rcu_dereference_raw(*slot);
if (node == NULL) if (node == NULL)
return NULL; return NULL;
...@@ -568,7 +568,7 @@ int radix_tree_tag_get(struct radix_tree_root *root, ...@@ -568,7 +568,7 @@ int radix_tree_tag_get(struct radix_tree_root *root,
if (!root_tag_get(root, tag)) if (!root_tag_get(root, tag))
return 0; return 0;
node = rcu_dereference(root->rnode); node = rcu_dereference_raw(root->rnode);
if (node == NULL) if (node == NULL)
return 0; return 0;
...@@ -602,7 +602,7 @@ int radix_tree_tag_get(struct radix_tree_root *root, ...@@ -602,7 +602,7 @@ int radix_tree_tag_get(struct radix_tree_root *root,
BUG_ON(ret && saw_unset_tag); BUG_ON(ret && saw_unset_tag);
return !!ret; return !!ret;
} }
node = rcu_dereference(node->slots[offset]); node = rcu_dereference_raw(node->slots[offset]);
shift -= RADIX_TREE_MAP_SHIFT; shift -= RADIX_TREE_MAP_SHIFT;
height--; height--;
} }
...@@ -711,7 +711,7 @@ __lookup(struct radix_tree_node *slot, void ***results, unsigned long index, ...@@ -711,7 +711,7 @@ __lookup(struct radix_tree_node *slot, void ***results, unsigned long index,
} }
shift -= RADIX_TREE_MAP_SHIFT; shift -= RADIX_TREE_MAP_SHIFT;
slot = rcu_dereference(slot->slots[i]); slot = rcu_dereference_raw(slot->slots[i]);
if (slot == NULL) if (slot == NULL)
goto out; goto out;
} }
...@@ -758,7 +758,7 @@ radix_tree_gang_lookup(struct radix_tree_root *root, void **results, ...@@ -758,7 +758,7 @@ radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
unsigned long cur_index = first_index; unsigned long cur_index = first_index;
unsigned int ret; unsigned int ret;
node = rcu_dereference(root->rnode); node = rcu_dereference_raw(root->rnode);
if (!node) if (!node)
return 0; return 0;
...@@ -787,7 +787,7 @@ radix_tree_gang_lookup(struct radix_tree_root *root, void **results, ...@@ -787,7 +787,7 @@ radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
slot = *(((void ***)results)[ret + i]); slot = *(((void ***)results)[ret + i]);
if (!slot) if (!slot)
continue; continue;
results[ret + nr_found] = rcu_dereference(slot); results[ret + nr_found] = rcu_dereference_raw(slot);
nr_found++; nr_found++;
} }
ret += nr_found; ret += nr_found;
...@@ -826,7 +826,7 @@ radix_tree_gang_lookup_slot(struct radix_tree_root *root, void ***results, ...@@ -826,7 +826,7 @@ radix_tree_gang_lookup_slot(struct radix_tree_root *root, void ***results,
unsigned long cur_index = first_index; unsigned long cur_index = first_index;
unsigned int ret; unsigned int ret;
node = rcu_dereference(root->rnode); node = rcu_dereference_raw(root->rnode);
if (!node) if (!node)
return 0; return 0;
...@@ -915,7 +915,7 @@ __lookup_tag(struct radix_tree_node *slot, void ***results, unsigned long index, ...@@ -915,7 +915,7 @@ __lookup_tag(struct radix_tree_node *slot, void ***results, unsigned long index,
} }
} }
shift -= RADIX_TREE_MAP_SHIFT; shift -= RADIX_TREE_MAP_SHIFT;
slot = rcu_dereference(slot->slots[i]); slot = rcu_dereference_raw(slot->slots[i]);
if (slot == NULL) if (slot == NULL)
break; break;
} }
...@@ -951,7 +951,7 @@ radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results, ...@@ -951,7 +951,7 @@ radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
if (!root_tag_get(root, tag)) if (!root_tag_get(root, tag))
return 0; return 0;
node = rcu_dereference(root->rnode); node = rcu_dereference_raw(root->rnode);
if (!node) if (!node)
return 0; return 0;
...@@ -980,7 +980,7 @@ radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results, ...@@ -980,7 +980,7 @@ radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
slot = *(((void ***)results)[ret + i]); slot = *(((void ***)results)[ret + i]);
if (!slot) if (!slot)
continue; continue;
results[ret + nr_found] = rcu_dereference(slot); results[ret + nr_found] = rcu_dereference_raw(slot);
nr_found++; nr_found++;
} }
ret += nr_found; ret += nr_found;
...@@ -1020,7 +1020,7 @@ radix_tree_gang_lookup_tag_slot(struct radix_tree_root *root, void ***results, ...@@ -1020,7 +1020,7 @@ radix_tree_gang_lookup_tag_slot(struct radix_tree_root *root, void ***results,
if (!root_tag_get(root, tag)) if (!root_tag_get(root, tag))
return 0; return 0;
node = rcu_dereference(root->rnode); node = rcu_dereference_raw(root->rnode);
if (!node) if (!node)
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment