]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: fix reference a deleted item
authormyoungwon oh <omwmw@sk.com>
Wed, 11 Oct 2017 16:43:37 +0000 (01:43 +0900)
committermyoungwon oh <omwmw@sk.com>
Wed, 11 Oct 2017 16:43:37 +0000 (01:43 +0900)
move() delete to_process' entries. This commit will prevent
referencing a deleted item

Signed-off-by: Myoungwon Oh <omwmw@sk.com>
src/osd/OSD.cc

index 39404f7ddb0b9504f9940ebde8ecfb712b74f0d1..9fbeaac3dbcf1c3cc17b3e48469148991396b4f3 100644 (file)
@@ -9488,14 +9488,14 @@ void OSD::ShardedOpWQ::wake_pg_waiters(spg_t pgid)
       dout(20) << __func__ << " " << pgid
               << " to_process " << p->second.to_process
               << " waiting_for_pg=" << (int)p->second.waiting_for_pg << dendl;
+      for (auto& q : p->second.to_process) {
+       pushes_to_free += q.get_reserved_pushes();
+      }
       for (auto i = p->second.to_process.rbegin();
           i != p->second.to_process.rend();
           ++i) {
        sdata->_enqueue_front(std::move(*i), osd->op_prio_cutoff);
       }
-      for (auto& q : p->second.to_process) {
-       pushes_to_free += q.get_reserved_pushes();
-      }
       p->second.to_process.clear();
       p->second.waiting_for_pg = false;
       ++p->second.requeue_seq;