]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #13569 from athanatos/wip-17831-18583-18809-18927
authorSage Weil <sage@newdream.net>
Thu, 23 Feb 2017 15:22:02 +0000 (09:22 -0600)
committerGitHub <noreply@github.com>
Thu, 23 Feb 2017 15:22:02 +0000 (09:22 -0600)
ReplicatedBackend: don't queue Context outside of ObjectStore with obc

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
1  2 
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h

index 12c62c15cc1b333dd74ac0a138ef3f455db579c4,828324221fbecd373c2f966b9f5ff99600614686..dc66f8783156e069a60e5d5defec5897ac37a51e
@@@ -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);
        }
Simple merge