lkml.org 
[lkml]   [2010]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 7/9] radix-tree: disable RCU lockdep checking in radix tree
    Date
    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 92cdd99..6b9670d 100644
    --- a/lib/radix-tree.c
    +++ b/lib/radix-tree.c
    @@ -364,7 +364,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;

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

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

    @@ -602,7 +602,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--;
    }
    @@ -711,7 +711,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;
    }
    @@ -758,7 +758,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;

    @@ -787,7 +787,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;
    @@ -826,7 +826,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;

    @@ -915,7 +915,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;
    }
    @@ -951,7 +951,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;

    @@ -980,7 +980,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;
    @@ -1020,7 +1020,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


    \
     
     \ /
      Last update: 2010-01-15 02:05    [W:0.048 / U:2.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site