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 | } |
