From: Kefu Chai Date: Tue, 7 Jan 2020 08:31:49 +0000 (+0800) Subject: Merge pull request #28921 from rzarzynski/wip-msgr-drop-0c X-Git-Tag: v15.1.0~316 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=726b0de68fc87b3d068f6ddf58aef7c36a7c09a4;p=ceph.git Merge pull request #28921 from rzarzynski/wip-msgr-drop-0c msg/async: drop zero_copy_read() & co from ConnectedSocket. Reviewed-by: Haomai Wang Reviewed-by: Kefu Chai --- 726b0de68fc87b3d068f6ddf58aef7c36a7c09a4 diff --cc src/msg/async/rdma/RDMAConnectedSocketImpl.cc index c64da95b731d,a95151331a4f..4eb4d02b053f --- a/src/msg/async/rdma/RDMAConnectedSocketImpl.cc +++ b/src/msg/async/rdma/RDMAConnectedSocketImpl.cc @@@ -269,59 -356,13 +269,12 @@@ ssize_t RDMAConnectedSocketImpl::read_b } } - if (c != buffers.end() && (*c)->over()) - ++c; - buffers.erase(buffers.begin(), c); - ldout(cct, 25) << __func__ << " got " << read << " bytes, buffers size: " << buffers.size() << dendl; - return read; + buffers.erase(buffers.begin(), pchunk); + ldout(cct, 25) << __func__ << " got " << read_size << " bytes, buffers size: " << buffers.size() << dendl; + worker->perf_logger->inc(l_msgr_rdma_rx_bytes, read_size); + return read_size; } - ssize_t RDMAConnectedSocketImpl::zero_copy_read(bufferptr &data) - { - if (error) - return -error; - static const int MAX_COMPLETIONS = 16; - ibv_wc wc[MAX_COMPLETIONS]; - ssize_t size = 0; - - ibv_wc* response; - Chunk* chunk; - bool loaded = false; - auto iter = buffers.begin(); - if (iter != buffers.end()) { - chunk = *iter; - // FIXME need to handle release - // auto del = std::bind(&Chunk::post_srq, std::move(chunk), infiniband); - buffers.erase(iter); - loaded = true; - size = chunk->bound; - } - - std::vector cqe; - get_wc(cqe); - if (cqe.empty()) - return size == 0 ? -EAGAIN : size; - - ldout(cct, 20) << __func__ << " pool completion queue got " << cqe.size() << " responses."<< dendl; - - for (size_t i = 0; i < cqe.size(); ++i) { - response = &wc[i]; - chunk = reinterpret_cast(response->wr_id); - chunk->prepare_read(response->byte_len); - if (!loaded && i == 0) { - // FIXME need to handle release - // auto del = std::bind(&Chunk::post_srq, std::move(chunk), infiniband); - size = chunk->bound; - continue; - } - buffers.push_back(chunk); - iter++; - } - - if (size == 0) - return -EAGAIN; - return size; - } - ssize_t RDMAConnectedSocketImpl::send(bufferlist &bl, bool more) { if (error) {