]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: don't check order in finish_proxy_read 4462/head
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Tue, 24 Mar 2015 08:00:16 +0000 (16:00 +0800)
committerSage Weil <sage@redhat.com>
Fri, 24 Apr 2015 21:07:20 +0000 (14:07 -0700)
Read doesn't need to be ordered. So when proxy read comes back from base
tier, it's not necessarily at the front of the in progress list.

Fixes: #11211
Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
(cherry picked from commit 560a5839c0d1852b5816937b845b60390777636c)

src/osd/ReplicatedPG.cc

index 4e001921319a7f13589f86911ba74b13709673e3..479664fef57704ed27d716d99da997200e94eb89 100644 (file)
@@ -2060,9 +2060,12 @@ void ReplicatedPG::finish_proxy_read(hobject_t oid, ceph_tid_t tid, int r)
     return;
   }
   assert(q->second.size());
-  OpRequestRef op = q->second.front();
-  assert(op == prdop->op);
-  q->second.pop_front();
+  list<OpRequestRef>::iterator it = std::find(q->second.begin(),
+                                              q->second.end(),
+                                             prdop->op);
+  assert(it != q->second.end());
+  OpRequestRef op = *it;
+  q->second.erase(it);
   if (q->second.size() == 0) {
     in_progress_proxy_reads.erase(oid);
   }