diff options
author | Samuel Just <sam.just@inktank.com> | 2014-03-18 15:47:44 -0700 |
---|---|---|
committer | Samuel Just <sam.just@inktank.com> | 2014-03-18 15:47:46 -0700 |
commit | fdcf3eb45ac0121ade2cb21a9563070e9ff1aae7 (patch) | |
tree | db53ef4868546686af1764c34d2c27a5677f5982 | |
parent | f8632699b1c4d48a8c495532462204291cab6737 (diff) | |
download | ceph-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.cc | 2 |
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; } |