From: Sage Weil Date: Thu, 23 Feb 2017 15:22:02 +0000 (-0600) Subject: Merge pull request #13569 from athanatos/wip-17831-18583-18809-18927 X-Git-Tag: v12.0.1~290 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=292306cdfba3ff791192e8a672a07900cc918f8d;p=ceph.git Merge pull request #13569 from athanatos/wip-17831-18583-18809-18927 ReplicatedBackend: don't queue Context outside of ObjectStore with obc Reviewed-by: Josh Durgin Reviewed-by: Sage Weil --- 292306cdfba3ff791192e8a672a07900cc918f8d diff --cc src/osd/ReplicatedBackend.cc index 12c62c15cc1b,828324221fbe..dc66f8783156 --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@@ -877,10 -872,14 +877,14 @@@ struct C_ReplicatedBackend_OnPullComple C_ReplicatedBackend_OnPullComplete(ReplicatedBackend *bc, int priority) : bc(bc), priority(priority) {} - void finish(ThreadPool::TPHandle &handle) { + void finish(ThreadPool::TPHandle &handle) override { ReplicatedBackend::RPGHandle *h = bc->_open_recovery_op(); for (auto &&i: to_continue) { - if (!bc->start_pushes(i.hoid, i.obc, h)) { + auto j = bc->pulling.find(i.hoid); + assert(j != bc->pulling.end()); + ObjectContextRef obc = j->second.obc; + bc->clear_pull(j); + if (!bc->start_pushes(i.hoid, obc, h)) { bc->get_parent()->on_global_recover( i.hoid, i.stat); }