]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/msg/async/rdma/RDMAStack.h
update sources to v12.1.3
[ceph.git] / ceph / src / msg / async / rdma / RDMAStack.h
index 4f93c157f06670c8a39ee17bc5707845d1802fde..3c2d90094d140ad374d8926896ceabb57df36592 100644 (file)
@@ -127,10 +127,11 @@ class RDMADispatcher {
   int register_qp(QueuePair *qp, RDMAConnectedSocketImpl* csi);
   void make_pending_worker(RDMAWorker* w) {
     Mutex::Locker l(w_lock);
-    if (pending_workers.back() != w) {
-      pending_workers.push_back(w);
-      ++num_pending_workers;
-    }
+    auto it = std::find(pending_workers.begin(), pending_workers.end(), w);
+    if (it != pending_workers.end())
+      return;
+    pending_workers.push_back(w);
+    ++num_pending_workers;
   }
   RDMAStack* get_stack() { return stack; }
   RDMAConnectedSocketImpl* get_conn_lockless(uint32_t qp);
@@ -158,6 +159,7 @@ enum {
   l_msgr_rdma_tx_bytes,
   l_msgr_rdma_rx_chunks,
   l_msgr_rdma_rx_bytes,
+  l_msgr_rdma_pending_sent_conns,
 
   l_msgr_rdma_last,
 };
@@ -229,6 +231,7 @@ class RDMAConnectedSocketImpl : public ConnectedSocketImpl {
   EventCallbackRef con_handler;
   int tcp_fd = -1;
   bool active;// qp is active ?
+  bool pending;
 
   void notify();
   ssize_t read_buffers(char* buf, size_t len);
@@ -258,7 +261,8 @@ class RDMAConnectedSocketImpl : public ConnectedSocketImpl {
   void cleanup();
   void set_accept_fd(int sd);
   int try_connect(const entity_addr_t&, const SocketOptions &opt);
-
+  bool is_pending() {return pending;}
+  void set_pending(bool val) {pending = val;}
   class C_handle_connection : public EventCallback {
     RDMAConnectedSocketImpl *csi;
     bool active;
@@ -296,7 +300,6 @@ class RDMAServerSocketImpl : public ServerSocketImpl {
 class RDMAStack : public NetworkStack {
   vector<std::thread> threads;
   RDMADispatcher *dispatcher;
-  PerfCounters *perf_counter;
 
   std::atomic<bool> fork_finished = {false};