From bafd76ada36dbd0deb26becaedc1294cf18a5bd9 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 5 Mar 2014 17:39:42 -0800 Subject: [PATCH] ReplicatedPG: ensure clones are readable after find_object_context We only get EAGAIN if the object is missing. We also need the clone to be readable if we are reading it. The other find_object_context callers already require !degraded. Fixes: #7624 Signed-off-by: Samuel Just --- src/osd/ReplicatedPG.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index d031256261a57..4e38c2ce7adc9 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1251,6 +1251,11 @@ void ReplicatedPG::do_op(OpRequestRef op) wait_for_unreadable_object(missing_oid, op); return; } + } else if (r == 0 && is_unreadable_object(obc->obs.oi.soid)) { + dout(10) << __func__ << ": clone " << obc->obs.oi.soid + << " is unreadable, waiting" << dendl; + wait_for_unreadable_object(obc->obs.oi.soid, op); + return; } if (hit_set) { -- 2.39.5