Batch handle_immediate_ops more
This commit is contained in:
@@ -557,7 +557,7 @@ static void try_send_rdma_wr(osd_client_t *cl, ibv_sge *sge, int op_sge)
|
|||||||
int osd_messenger_t::try_send_rdma_copy(osd_client_t *cl, uint8_t *dst, int dst_len)
|
int osd_messenger_t::try_send_rdma_copy(osd_client_t *cl, uint8_t *dst, int dst_len)
|
||||||
{
|
{
|
||||||
int total_dst_len = dst_len;
|
int total_dst_len = dst_len;
|
||||||
while (dst_len > 0 && cl->write_ops.size())
|
while (dst_len > 0 && (cl->write_op || cl->write_ops.size()))
|
||||||
{
|
{
|
||||||
if (!cl->write_op)
|
if (!cl->write_op)
|
||||||
{
|
{
|
||||||
@@ -748,5 +748,4 @@ void osd_messenger_t::handle_rdma_events(msgr_rdma_context_t *rdma_context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (event_count > 0);
|
} while (event_count > 0);
|
||||||
handle_immediate_ops();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ void osd_messenger_t::read_requests()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
read_ready_clients.clear();
|
read_ready_clients.clear();
|
||||||
|
handle_immediate_ops();
|
||||||
}
|
}
|
||||||
|
|
||||||
void osd_messenger_t::handle_read(int result, osd_client_t *cl)
|
void osd_messenger_t::handle_read(int result, osd_client_t *cl)
|
||||||
@@ -110,7 +111,8 @@ void osd_messenger_t::handle_read(int result, osd_client_t *cl)
|
|||||||
full_read = result >= cl->read_iov.iov_len;
|
full_read = result >= cl->read_iov.iov_len;
|
||||||
if (!handle_read_buffer(cl, cl->in_buf, result))
|
if (!handle_read_buffer(cl, cl->in_buf, result))
|
||||||
{
|
{
|
||||||
handle_immediate_ops();
|
if (set_immediate_ops.size())
|
||||||
|
ringloop->wakeup();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,7 +155,8 @@ void osd_messenger_t::handle_read(int result, osd_client_t *cl)
|
|||||||
{
|
{
|
||||||
read_ready_clients.push_back(cl->client_id);
|
read_ready_clients.push_back(cl->client_id);
|
||||||
}
|
}
|
||||||
handle_immediate_ops();
|
if (set_immediate_ops.size())
|
||||||
|
ringloop->wakeup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void osd_messenger_t::handle_immediate_ops()
|
void osd_messenger_t::handle_immediate_ops()
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void osd_messenger_t::outbox_push(osd_op_t *cur_op)
|
|||||||
if (!ringloop)
|
if (!ringloop)
|
||||||
{
|
{
|
||||||
// FIXME: It's worse because it doesn't allow batching
|
// FIXME: It's worse because it doesn't allow batching
|
||||||
while (cl->write_ops.size())
|
while (cl->write_op || cl->write_ops.size())
|
||||||
{
|
{
|
||||||
try_send(cl);
|
try_send(cl);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user