projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rculfhash: fix fini_table for size 1
[urcu.git]
/
rculfhash.c
diff --git
a/rculfhash.c
b/rculfhash.c
index 4b781f7b9012273b24dfb93e99afa0d664032daf..003ab0bd0236d39ee4c591c2dccec6a3266bfca9 100644
(file)
--- a/
rculfhash.c
+++ b/
rculfhash.c
@@
-890,8
+890,12
@@
void fini_table(struct cds_lfht *ht, struct rcu_table *t,
len = !i ? 1 : 1UL << (i - 1);
dbg_printf("fini order %lu len: %lu\n", i, len);
len = !i ? 1 : 1UL << (i - 1);
dbg_printf("fini order %lu len: %lu\n", i, len);
- /* Update table size */
- t->size = 1UL << (i - 1);
+ /*
+ * Update table size. Need to shrink this table prior to
+ * removal so gc lookups use non-logically-removed dummy
+ * nodes.
+ */
+ t->size = (i == 1) ? 0 : 1UL << (i - 2);
/* Unlink */
for (j = 0; j < len; j++) {
struct cds_lfht_node *fini_node =
/* Unlink */
for (j = 0; j < len; j++) {
struct cds_lfht_node *fini_node =
This page took
0.023339 seconds
and
4
git commands to generate.