From: Kefu Chai Date: Fri, 11 Nov 2016 13:37:50 +0000 (+0800) Subject: ReplicatedPG::failed_push: release read lock on failure X-Git-Tag: v11.1.0~301^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F11914%2Fhead;p=ceph.git ReplicatedPG::failed_push: release read lock on failure and requeue the blocked ops. Fixes: http://tracker.ceph.com/issues/17857 Signed-off-by: Kefu Chai --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 160f95dd9fd2..8a8b5870ecbc 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -9845,7 +9845,14 @@ void ReplicatedPG::recover_got(hobject_t oid, eversion_t v) void ReplicatedPG::failed_push(const list &from, const hobject_t &soid) { + dout(20) << __func__ << ": " << soid << dendl; assert(recovering.count(soid)); + auto obc = recovering[soid]; + if (obc) { + list 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);