]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
PrioritizedQueue: use iterator to streamlink SubQueue::remove_by_class()
authorSage Weil <sage@inktank.com>
Sat, 10 Nov 2012 11:57:23 +0000 (03:57 -0800)
committerSamuel Just <sam.just@inktank.com>
Tue, 13 Nov 2012 18:45:00 +0000 (10:45 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/common/PrioritizedQueue.h

index d9ac2b323161879100944f858502bb054ee4ad00..53933421db2aa9a0f960c7d935257c525c72be7e 100644 (file)
@@ -52,7 +52,7 @@ class PrioritizedQueue {
     unsigned ret = 0;
     for (typename list<pair<unsigned, T> >::iterator i = l->begin();
         i != l->end();
-      ) {
+        ) {
       if (f(i->second)) {
        l->erase(i++);
        ret++;
@@ -137,14 +137,16 @@ class PrioritizedQueue {
        cur = q.begin();
     }
     void remove_by_class(K k) {
-      if (!q.count(k))
+      typename map<K, list<pair<unsigned, T> > >::iterator i = q.find(k);
+      if (i == q.end())
        return;
-      size -= q[k].size();
-      if (cur == q.find(k))
+      size -= i->second.size();
+      if (i == cur) {
        ++cur;
-      q.erase(k);
-      if (cur == q.end())
-       cur = q.begin();
+       if (cur == q.end())
+         cur = q.begin();
+      }
+      q.erase(i);
     }
   };
   map<unsigned, SubQueue> high_queue;