Просмотр исходного кода

corosync to start in infiniband + redundant ring active/passive mode

Corosync now works with infiniband transport in any redundant ring mode

Signed-off-by: Evgeny Barskiy <barskiy@rts.ru>
Reviewed-by: Jan Friesse <jfriesse@redhat.com>
(cherry picked from commit e3f615b4a000d844f94bef65c61d92719e966218)
Evgeny Barskiy 13 лет назад
Родитель
Сommit
c9c47e8fec
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      exec/totemiba.c

+ 9 - 1
exec/totemiba.c

@@ -534,6 +534,7 @@ static int mcast_rdma_event_fn (int events,  int suck,  void *context)
 	 */
 	case RDMA_CM_EVENT_ADDR_RESOLVED:
 		rdma_join_multicast (instance->mcast_cma_id, &instance->mcast_addr, instance);
+		usleep(1000);
 		break;
 	/*
 	 * occurs when the CM joins the multicast group
@@ -1027,6 +1028,12 @@ static int send_token_unbind (struct totemiba_instance *instance)
 		instance->totemiba_poll_handle,
 		instance->send_token_channel->fd);
 
+	if(instance->send_token_ah)
+	{
+		ibv_destroy_ah(instance->send_token_ah);
+		instance->send_token_ah = 0;
+	}
+
 	rdma_destroy_qp (instance->send_token_cma_id);
 	ibv_destroy_cq (instance->send_token_send_cq);
 	ibv_destroy_cq (instance->send_token_recv_cq);
@@ -1413,7 +1420,8 @@ int totemiba_token_send (
 	sge.lkey = send_buf->mr->lkey;
 	sge.addr = (uintptr_t)msg;
 
-	res = ibv_post_send (instance->send_token_cma_id->qp, &send_wr, &failed_send_wr);
+	if(instance->send_token_ah != 0 && instance->send_token_bound)
+		res = ibv_post_send (instance->send_token_cma_id->qp, &send_wr, &failed_send_wr);
 
 	return (res);
 }