diff options
Diffstat (limited to 'net/tipc/name_distr.c')
-rw-r--r-- | net/tipc/name_distr.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c index a3bbc891f959..f0b063bcc2a9 100644 --- a/net/tipc/name_distr.c +++ b/net/tipc/name_distr.c | |||
@@ -127,7 +127,7 @@ void tipc_named_publish(struct publication *publ) | |||
127 | 127 | ||
128 | buf = named_prepare_buf(PUBLICATION, ITEM_SIZE, 0); | 128 | buf = named_prepare_buf(PUBLICATION, ITEM_SIZE, 0); |
129 | if (!buf) { | 129 | if (!buf) { |
130 | warn("Memory squeeze; failed to distribute publication\n"); | 130 | warn("Publication distribution failure\n"); |
131 | return; | 131 | return; |
132 | } | 132 | } |
133 | 133 | ||
@@ -151,7 +151,7 @@ void tipc_named_withdraw(struct publication *publ) | |||
151 | 151 | ||
152 | buf = named_prepare_buf(WITHDRAWAL, ITEM_SIZE, 0); | 152 | buf = named_prepare_buf(WITHDRAWAL, ITEM_SIZE, 0); |
153 | if (!buf) { | 153 | if (!buf) { |
154 | warn("Memory squeeze; failed to distribute withdrawal\n"); | 154 | warn("Withdrawl distribution failure\n"); |
155 | return; | 155 | return; |
156 | } | 156 | } |
157 | 157 | ||
@@ -174,7 +174,6 @@ void tipc_named_node_up(unsigned long node) | |||
174 | u32 rest; | 174 | u32 rest; |
175 | u32 max_item_buf; | 175 | u32 max_item_buf; |
176 | 176 | ||
177 | assert(in_own_cluster(node)); | ||
178 | read_lock_bh(&tipc_nametbl_lock); | 177 | read_lock_bh(&tipc_nametbl_lock); |
179 | max_item_buf = TIPC_MAX_USER_MSG_SIZE / ITEM_SIZE; | 178 | max_item_buf = TIPC_MAX_USER_MSG_SIZE / ITEM_SIZE; |
180 | max_item_buf *= ITEM_SIZE; | 179 | max_item_buf *= ITEM_SIZE; |
@@ -185,8 +184,8 @@ void tipc_named_node_up(unsigned long node) | |||
185 | left = (rest <= max_item_buf) ? rest : max_item_buf; | 184 | left = (rest <= max_item_buf) ? rest : max_item_buf; |
186 | rest -= left; | 185 | rest -= left; |
187 | buf = named_prepare_buf(PUBLICATION, left, node); | 186 | buf = named_prepare_buf(PUBLICATION, left, node); |
188 | if (buf == NULL) { | 187 | if (!buf) { |
189 | warn("Memory Squeeze; could not send publication\n"); | 188 | warn("Bulk publication distribution failure\n"); |
190 | goto exit; | 189 | goto exit; |
191 | } | 190 | } |
192 | item = (struct distr_item *)msg_data(buf_msg(buf)); | 191 | item = (struct distr_item *)msg_data(buf_msg(buf)); |
@@ -221,15 +220,24 @@ exit: | |||
221 | static void node_is_down(struct publication *publ) | 220 | static void node_is_down(struct publication *publ) |
222 | { | 221 | { |
223 | struct publication *p; | 222 | struct publication *p; |
223 | |||
224 | write_lock_bh(&tipc_nametbl_lock); | 224 | write_lock_bh(&tipc_nametbl_lock); |
225 | dbg("node_is_down: withdrawing %u, %u, %u\n", | 225 | dbg("node_is_down: withdrawing %u, %u, %u\n", |
226 | publ->type, publ->lower, publ->upper); | 226 | publ->type, publ->lower, publ->upper); |
227 | publ->key += 1222345; | 227 | publ->key += 1222345; |
228 | p = tipc_nametbl_remove_publ(publ->type, publ->lower, | 228 | p = tipc_nametbl_remove_publ(publ->type, publ->lower, |
229 | publ->node, publ->ref, publ->key); | 229 | publ->node, publ->ref, publ->key); |
230 | assert(p == publ); | ||
231 | write_unlock_bh(&tipc_nametbl_lock); | 230 | write_unlock_bh(&tipc_nametbl_lock); |
232 | kfree(publ); | 231 | |
232 | if (p != publ) { | ||
233 | err("Unable to remove publication from failed node\n" | ||
234 | "(type=%u, lower=%u, node=0x%x, ref=%u, key=%u)\n", | ||
235 | publ->type, publ->lower, publ->node, publ->ref, publ->key); | ||
236 | } | ||
237 | |||
238 | if (p) { | ||
239 | kfree(p); | ||
240 | } | ||
233 | } | 241 | } |
234 | 242 | ||
235 | /** | 243 | /** |
@@ -275,9 +283,15 @@ void tipc_named_recv(struct sk_buff *buf) | |||
275 | if (publ) { | 283 | if (publ) { |
276 | tipc_nodesub_unsubscribe(&publ->subscr); | 284 | tipc_nodesub_unsubscribe(&publ->subscr); |
277 | kfree(publ); | 285 | kfree(publ); |
286 | } else { | ||
287 | err("Unable to remove publication by node 0x%x\n" | ||
288 | "(type=%u, lower=%u, ref=%u, key=%u)\n", | ||
289 | msg_orignode(msg), | ||
290 | ntohl(item->type), ntohl(item->lower), | ||
291 | ntohl(item->ref), ntohl(item->key)); | ||
278 | } | 292 | } |
279 | } else { | 293 | } else { |
280 | warn("tipc_named_recv: unknown msg\n"); | 294 | warn("Unrecognized name table message received\n"); |
281 | } | 295 | } |
282 | item++; | 296 | item++; |
283 | } | 297 | } |