From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@elte.hu, laijs@cn.fujitsu.com, dipankar@in.ibm.com,
akpm@linux-foundation.org, mathieu.desnoyers@polymtl.ca,
josh@joshtriplett.org, dvhltc@us.ibm.com, niv@us.ibm.com,
tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org,
Valdis.Kletnieks@vt.edu, dhowells@redhat.com,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: [PATCH tip/core/rcu 7/8] radix-tree: disable RCU lockdep checking in radix tree
Date: Mon, 4 Jan 2010 18:04:10 -0800 [thread overview]
Message-ID: <12626570512382-git-send-email-> (raw)
In-Reply-To: <20100105020345.GA32114@linux.vnet.ibm.com>
From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
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: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
lib/radix-tree.c | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index 23abbd9..46724e2 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -361,7 +361,7 @@ static void *radix_tree_lookup_element(struct radix_tree_root *root,
unsigned int height, shift;
struct radix_tree_node *node, **slot;
- node = rcu_dereference(root->rnode);
+ node = rcu_dereference_raw(root->rnode);
if (node == NULL)
return NULL;
@@ -381,7 +381,7 @@ static void *radix_tree_lookup_element(struct radix_tree_root *root,
do {
slot = (struct radix_tree_node **)
(node->slots + ((index>>shift) & RADIX_TREE_MAP_MASK));
- node = rcu_dereference(*slot);
+ node = rcu_dereference_raw(*slot);
if (node == NULL)
return NULL;
@@ -566,7 +566,7 @@ int radix_tree_tag_get(struct radix_tree_root *root,
if (!root_tag_get(root, tag))
return 0;
- node = rcu_dereference(root->rnode);
+ node = rcu_dereference_raw(root->rnode);
if (node == NULL)
return 0;
@@ -600,7 +600,7 @@ int radix_tree_tag_get(struct radix_tree_root *root,
BUG_ON(ret && saw_unset_tag);
return !!ret;
}
- node = rcu_dereference(node->slots[offset]);
+ node = rcu_dereference_raw(node->slots[offset]);
shift -= RADIX_TREE_MAP_SHIFT;
height--;
}
@@ -710,7 +710,7 @@ __lookup(struct radix_tree_node *slot, void ***results, unsigned long index,
}
shift -= RADIX_TREE_MAP_SHIFT;
- slot = rcu_dereference(slot->slots[i]);
+ slot = rcu_dereference_raw(slot->slots[i]);
if (slot == NULL)
goto out;
}
@@ -757,7 +757,7 @@ radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
unsigned long cur_index = first_index;
unsigned int ret;
- node = rcu_dereference(root->rnode);
+ node = rcu_dereference_raw(root->rnode);
if (!node)
return 0;
@@ -786,7 +786,7 @@ radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
slot = *(((void ***)results)[ret + i]);
if (!slot)
continue;
- results[ret + nr_found] = rcu_dereference(slot);
+ results[ret + nr_found] = rcu_dereference_raw(slot);
nr_found++;
}
ret += nr_found;
@@ -825,7 +825,7 @@ radix_tree_gang_lookup_slot(struct radix_tree_root *root, void ***results,
unsigned long cur_index = first_index;
unsigned int ret;
- node = rcu_dereference(root->rnode);
+ node = rcu_dereference_raw(root->rnode);
if (!node)
return 0;
@@ -914,7 +914,7 @@ __lookup_tag(struct radix_tree_node *slot, void ***results, unsigned long index,
}
}
shift -= RADIX_TREE_MAP_SHIFT;
- slot = rcu_dereference(slot->slots[i]);
+ slot = rcu_dereference_raw(slot->slots[i]);
if (slot == NULL)
break;
}
@@ -950,7 +950,7 @@ radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
if (!root_tag_get(root, tag))
return 0;
- node = rcu_dereference(root->rnode);
+ node = rcu_dereference_raw(root->rnode);
if (!node)
return 0;
@@ -979,7 +979,7 @@ radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
slot = *(((void ***)results)[ret + i]);
if (!slot)
continue;
- results[ret + nr_found] = rcu_dereference(slot);
+ results[ret + nr_found] = rcu_dereference_raw(slot);
nr_found++;
}
ret += nr_found;
@@ -1019,7 +1019,7 @@ radix_tree_gang_lookup_tag_slot(struct radix_tree_root *root, void ***results,
if (!root_tag_get(root, tag))
return 0;
- node = rcu_dereference(root->rnode);
+ node = rcu_dereference_raw(root->rnode);
if (!node)
return 0;
--
1.5.2.5
next prev parent reply other threads:[~2010-01-05 2:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-05 2:03 [PATCH tip/core/rcu 0/8] rcu: add lockdep-based diagnostics to rcu_dereference() Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 1/8] rcu: introduce lockdep-based checking to RCU read-side primitives Paul E. McKenney
2010-01-13 10:28 ` [tip:core/rcu] rcu: Introduce " tip-bot for Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 2/8] rcu: add lockdep-enabled variants of rcu_dereference() Paul E. McKenney
2010-01-13 10:28 ` [tip:core/rcu] rcu: Add " tip-bot for Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 3/8] rcu: disable lockdep checking in RCU list-traversal primitives Paul E. McKenney
2010-01-13 10:29 ` [tip:core/rcu] rcu: Disable " tip-bot for Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 4/8] net: add checking to rcu_dereference() primitives Paul E. McKenney
2010-01-13 10:30 ` [tip:core/rcu] net: Add " tip-bot for Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 5/8] sched: use lockdep-based checking on rcu_dereference() Paul E. McKenney
2010-01-13 10:29 ` [tip:core/rcu] sched: Use " tip-bot for Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 6/8] vfs: apply lockdep-based checking to rcu_dereference() uses Paul E. McKenney
2010-01-13 10:30 ` [tip:core/rcu] vfs: Apply " tip-bot for Paul E. McKenney
2010-01-05 2:04 ` Paul E. McKenney [this message]
2010-01-13 10:29 ` [tip:core/rcu] radix-tree: Disable RCU lockdep checking in radix tree tip-bot for Paul E. McKenney
2010-01-05 2:04 ` [PATCH tip/core/rcu 8/8] idr: apply lockdep-based diagnostics to rcu_dereference() uses Paul E. McKenney
2010-01-13 10:29 ` [tip:core/rcu] idr: Apply " tip-bot for Paul E. McKenney
2010-01-13 9:22 ` [PATCH tip/core/rcu 0/8] rcu: add lockdep-based diagnostics to rcu_dereference() Ingo Molnar
2010-01-13 16:17 ` Paul E. McKenney
2010-01-13 16:37 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=12626570512382-git-send-email- \
--to=paulmck@linux.vnet.ibm.com \
--cc=Valdis.Kletnieks@vt.edu \
--cc=akpm@linux-foundation.org \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=dvhltc@us.ibm.com \
--cc=josh@joshtriplett.org \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=niv@us.ibm.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox