From: Samuel Just Date: Tue, 18 Mar 2014 22:47:44 +0000 (-0700) Subject: ReplicatedPG::do_op: delay if snapdir is unreadable X-Git-Tag: v0.78~5^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1508%2Fhead;p=ceph.git ReplicatedPG::do_op: delay if snapdir is unreadable Since all we really need on a snapdir is the context, we really only need it to be !missing. However, it might become !missing before it becomes !unreadable. That allows ops to end up in the waiting_for_degraded queue before one in waiting_for_unreadable is woken, which allows the ops to be reordered. Rather than reintroduce an extra waiting_for_missing queue, simply require !unreadable for snapdir (which implies !misssing). Fixes: #7777 Signed-off-by: Samuel Just --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 160f0d654cf0..88cd06b23709 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1216,7 +1216,7 @@ void ReplicatedPG::do_op(OpRequestRef op) hobject_t snapdir(m->get_oid(), m->get_object_locator().key, CEPH_SNAPDIR, m->get_pg().ps(), info.pgid.pool(), m->get_object_locator().nspace); - if (is_missing_object(snapdir)) { + if (is_unreadable_object(snapdir)) { wait_for_unreadable_object(snapdir, op); return; }