projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rculfhash: fall back to single-threaded resize on calloc failure
[userspace-rcu.git]
/
rculfhash.c
diff --git
a/rculfhash.c
b/rculfhash.c
index 7d39388f494700a1b06a5df885d5a5350cdf42a8..2a450459f5cfa50e94bce03e00be0ad1be7b2b4f 100644
(file)
--- a/
rculfhash.c
+++ b/
rculfhash.c
@@
-1189,7
+1189,10
@@
void partition_resize_helper(struct cds_lfht *ht, unsigned long i,
}
partition_len = len >> cds_lfht_get_count_order_ulong(nr_threads);
work = calloc(nr_threads, sizeof(*work));
}
partition_len = len >> cds_lfht_get_count_order_ulong(nr_threads);
work = calloc(nr_threads, sizeof(*work));
- assert(work);
+ if (!work) {
+ dbg_printf("error allocating for resize, single-threading\n");
+ goto fallback;
+ }
for (thread = 0; thread < nr_threads; thread++) {
work[thread].ht = ht;
work[thread].i = i;
for (thread = 0; thread < nr_threads; thread++) {
work[thread].ht = ht;
work[thread].i = i;
@@
-1205,6
+1208,11
@@
void partition_resize_helper(struct cds_lfht *ht, unsigned long i,
assert(!ret);
}
free(work);
assert(!ret);
}
free(work);
+ return;
+fallback:
+ ht->flavor->thread_online();
+ fct(ht, i, 0, len);
+ ht->flavor->thread_offline();
}
/*
}
/*
This page took
0.024957 seconds
and
4
git commands to generate.