From 1255334533e233daa47ff497a43faac338c9b4ce Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Thu, 16 Feb 2006 14:43:01 +1100 Subject: [PATCH] --- yaml --- r: 20364 b: refs/heads/master c: 90f9dd8f72773152b69042debd6b9ed6d224703a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/lib/radix-tree.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 028257dd24b1..71b38ecc4db7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d89b8f40fca43cab829fea5c0e7d3951db2fb4bd +refs/heads/master: 90f9dd8f72773152b69042debd6b9ed6d224703a diff --git a/trunk/lib/radix-tree.c b/trunk/lib/radix-tree.c index c0bd4a914803..1e5b17dc7e3d 100644 --- a/trunk/lib/radix-tree.c +++ b/trunk/lib/radix-tree.c @@ -752,12 +752,14 @@ void *radix_tree_delete(struct radix_tree_root *root, unsigned long index) */ nr_cleared_tags = 0; for (tag = 0; tag < RADIX_TREE_TAGS; tag++) { + tags[tag] = 1; if (tag_get(pathp->node, tag, pathp->offset)) { tag_clear(pathp->node, tag, pathp->offset); - tags[tag] = 0; - nr_cleared_tags++; - } else - tags[tag] = 1; + if (!any_tag_set(pathp->node, tag)) { + tags[tag] = 0; + nr_cleared_tags++; + } + } } for (pathp--; nr_cleared_tags && pathp->node; pathp--) {