]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc/Objecter: optimize Objecter::tick. 6155/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Tue, 1 Sep 2015 13:35:19 +0000 (21:35 +0800)
committerLoic Dachary <ldachary@redhat.com>
Fri, 2 Oct 2015 13:38:42 +0000 (15:38 +0200)
Set bool value is better than insert same value into set<>.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
(cherry picked from commit ee204044d9e69ea44b533c05cec154974039264c)

src/osdc/Objecter.cc

index 92df11fd833a751c4b90d8286be570f15d3d93f8..9f35ffdda753cddd495b262bce8bb2b3ade350c6 100644 (file)
@@ -1862,6 +1862,7 @@ void Objecter::tick()
   for (map<int,OSDSession*>::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) {
     OSDSession *s = siter->second;
     RWLock::RLocker l(s->lock);
+    bool found = false;
     for (map<ceph_tid_t,Op*>::iterator p = s->ops.begin();
        p != s->ops.end();
        ++p) {
@@ -1869,7 +1870,7 @@ void Objecter::tick()
       assert(op->session);
       if (op->stamp < cutoff) {
        ldout(cct, 2) << " tid " << p->first << " on osd." << op->session->osd << " is laggy" << dendl;
-       toping.insert(op->session);
+       found = true;
        ++laggy_ops;
       }
     }
@@ -1880,7 +1881,7 @@ void Objecter::tick()
       RWLock::WLocker wl(op->watch_lock);
       assert(op->session);
       ldout(cct, 10) << " pinging osd that serves lingering tid " << p->first << " (osd." << op->session->osd << ")" << dendl;
-      toping.insert(op->session);
+      found = true;
       if (op->is_watch && op->registered && !op->last_error)
        _send_linger_ping(op);
     }
@@ -1890,8 +1891,10 @@ void Objecter::tick()
       CommandOp *op = p->second;
       assert(op->session);
       ldout(cct, 10) << " pinging osd that serves command tid " << p->first << " (osd." << op->session->osd << ")" << dendl;
-      toping.insert(op->session);
+      found = true;
     }
+    if (found)
+      toping.insert(s);
   }
   if (num_homeless_ops.read() || !toping.empty()) {
     _maybe_request_map();