From fdcf3eb45ac0121ade2cb21a9563070e9ff1aae7 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 18 Mar 2014 15:47:44 -0700 Subject: [PATCH] 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 --- src/osd/ReplicatedPG.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } -- 2.47.3