|
|
|
@ -411,6 +411,12 @@ bool osd_messenger_t::connect_rdma_client(osd_client_t *cl, json11::Json rdma_ad |
|
|
|
|
|
|
|
|
|
static void try_send_rdma_wr(msgr_rdma_connection_t *rc, uint64_t wr_id, ibv_sge *sge, int op_sge) |
|
|
|
|
{ |
|
|
|
|
timespec tv; |
|
|
|
|
clock_gettime(CLOCK_REALTIME, &tv); |
|
|
|
|
uint64_t total = 0; |
|
|
|
|
for (int i = 0; i < op_sge; i++) |
|
|
|
|
total += sge[i].length; |
|
|
|
|
printf("%lu.%09lu RDMA send to queue %d: %lu bytes\n", tv.tv_sec, tv.tv_nsec, rc->qp->qp_num, total); |
|
|
|
|
ibv_send_wr *bad_wr = NULL; |
|
|
|
|
ibv_send_wr wr = { |
|
|
|
|
.wr_id = wr_id, |
|
|
|
@ -430,6 +436,12 @@ static void try_send_rdma_wr(msgr_rdma_connection_t *rc, uint64_t wr_id, ibv_sge |
|
|
|
|
|
|
|
|
|
static void try_recv_rdma_wr(msgr_rdma_connection_t *rc, uint64_t wr_id, ibv_sge *sge, int op_sge) |
|
|
|
|
{ |
|
|
|
|
timespec tv; |
|
|
|
|
clock_gettime(CLOCK_REALTIME, &tv); |
|
|
|
|
uint64_t total = 0; |
|
|
|
|
for (int i = 0; i < op_sge; i++) |
|
|
|
|
total += sge[i].length; |
|
|
|
|
printf("%lu.%09lu RDMA receive from queue %d: %lu bytes\n", tv.tv_sec, tv.tv_nsec, rc->qp->qp_num, total); |
|
|
|
|
ibv_recv_wr *bad_wr = NULL; |
|
|
|
|
ibv_recv_wr wr = { |
|
|
|
|
.wr_id = wr_id, |
|
|
|
@ -783,6 +795,7 @@ void osd_messenger_t::handle_rdma_events() |
|
|
|
|
ibv_cq *ev_cq; |
|
|
|
|
void *ev_ctx; |
|
|
|
|
// FIXME: This is inefficient as it calls read()...
|
|
|
|
|
timespec tv; |
|
|
|
|
if (ibv_get_cq_event(rdma_context->channel, &ev_cq, &ev_ctx) == 0) |
|
|
|
|
{ |
|
|
|
|
ibv_ack_cq_events(rdma_context->cq, 1); |
|
|
|
@ -826,6 +839,16 @@ void osd_messenger_t::handle_rdma_events() |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
auto rc = cl->rdma_queues[q]; |
|
|
|
|
if (is_send) |
|
|
|
|
{ |
|
|
|
|
clock_gettime(CLOCK_REALTIME, &tv); |
|
|
|
|
printf("%lu.%09lu Done RDMA send on queue %d\n", tv.tv_sec, tv.tv_nsec, wc[i].qp_num); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
clock_gettime(CLOCK_REALTIME, &tv); |
|
|
|
|
printf("%lu.%09lu Done RDMA recv on queue %d, %d bytes\n", tv.tv_sec, tv.tv_nsec, wc[i].qp_num, wc[i].byte_len); |
|
|
|
|
} |
|
|
|
|
if (!is_send) |
|
|
|
|
{ |
|
|
|
|
rc->cur_recv--; |
|
|
|
|