summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2014-03-18 15:47:44 -0700
committerSamuel Just <sam.just@inktank.com>2014-03-18 15:47:46 -0700
commitfdcf3eb45ac0121ade2cb21a9563070e9ff1aae7 (patch)
treedb53ef4868546686af1764c34d2c27a5677f5982
parentf8632699b1c4d48a8c495532462204291cab6737 (diff)
downloadceph-fdcf3eb45ac0121ade2cb21a9563070e9ff1aae7.tar.gz
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 <sam.just@inktank.com>
-rw-r--r--src/osd/ReplicatedPG.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index 160f0d654cf..88cd06b2370 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;
}