projects
/
archipelago
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
839eda9
)
Fix bug in mapperd.
author
Filippos Giannakos
<philipgian@grnet.gr>
Fri, 19 Apr 2013 08:48:58 +0000
(11:48 +0300)
committer
Filippos Giannakos
<philipgian@grnet.gr>
Fri, 19 Apr 2013 08:48:58 +0000
(11:48 +0300)
When signaling map, use signal_broadcast to wake up all waiters instead of just
one, to avoid missing signals when cached is dropped for the map.
xseg/peers/user/mt-mapperd.c
patch
|
blob
|
history
diff --git
a/xseg/peers/user/mt-mapperd.c
b/xseg/peers/user/mt-mapperd.c
index
2b4c95c
..
bb22141
100644
(file)
--- a/
xseg/peers/user/mt-mapperd.c
+++ b/
xseg/peers/user/mt-mapperd.c
@@
-175,11
+175,11
@@
struct map_node {
#define signal_map(__map) \
do { \
if (__map->waiters) { \
- ta += 1; \
+ ta += __map->waiters; \
XSEGLOG2(&lc, D, "Signaling map %lx %s, waiters: %u, \
ta: %u", __map, __map->volume, __map->waiters, ta); \
- __map->waiters--; \
- st_cond_signal(__map->cond); \
+ __map->waiters = 0; \
+ st_cond_broadcast(__map->cond); \
} \
}while(0)