]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG::failed_push: release read lock on failure 11914/head
authorKefu Chai <kchai@redhat.com>
Fri, 11 Nov 2016 13:37:50 +0000 (21:37 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 14 Nov 2016 10:52:22 +0000 (18:52 +0800)
and requeue the blocked ops.

Fixes: http://tracker.ceph.com/issues/17857
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/osd/ReplicatedPG.cc

index 160f95dd9fd2892cfcf6f5cbe4ff9a89bb93e22f..8a8b5870ecbc2bbcf62ff415ff50d7a696961c47 100644 (file)
@@ -9845,7 +9845,14 @@ void ReplicatedPG::recover_got(hobject_t oid, eversion_t v)
 
 void ReplicatedPG::failed_push(const list<pg_shard_t> &from, const hobject_t &soid)
 {
+  dout(20) << __func__ << ": " << soid << dendl;
   assert(recovering.count(soid));
+  auto obc = recovering[soid];
+  if (obc) {
+    list<OpRequestRef> blocked_ops;
+    obc->drop_recovery_read(&blocked_ops);
+    requeue_ops(blocked_ops);
+  }
   recovering.erase(soid);
   for (auto&& i : from)
     missing_loc.remove_location(soid, i);