From: Zhiqiang Wang Date: Fri, 24 Apr 2015 08:35:47 +0000 (+0800) Subject: osd/ReplicatedPG: don't check order in finish_proxy_write X-Git-Tag: v9.1.0~345^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ab39e03d598854a3c2fc974d4b48840fc0bacb37;p=ceph.git osd/ReplicatedPG: don't check order in finish_proxy_write When proxy write comes back from base tier, the write op may or may not sit at the front of the list. Signed-off-by: Zhiqiang Wang --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 9047d8bac0ed..a0cb8fa14eda 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -2281,9 +2281,11 @@ void ReplicatedPG::finish_proxy_write(hobject_t oid, ceph_tid_t tid, int r) } list& in_progress_op = q->second; assert(in_progress_op.size()); - OpRequestRef op = in_progress_op.front(); - assert(op == pwop->op); - in_progress_op.pop_front(); + list::iterator it = std::find(in_progress_op.begin(), + in_progress_op.end(), + pwop->op); + assert(it != in_progress_op.end()); + in_progress_op.erase(it); if (in_progress_op.size() == 0) { in_progress_proxy_ops.erase(oid); }