]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix requeue order for waiting_for_ondisk
authorSage Weil <sage@inktank.com>
Tue, 21 Aug 2012 17:35:37 +0000 (10:35 -0700)
committerSage Weil <sage@inktank.com>
Tue, 21 Aug 2012 17:48:48 +0000 (10:48 -0700)
We are calling requeue_ops() on each individual op, which means we need
to requeue in reverse order (newest first, oldest last).

Fixes: #2947
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
src/osd/ReplicatedPG.cc

index 296bffb4387b560e7e8570a87f2bb7faebaf3308..d9f868539829f5a935a40d829d96d4787c2ba82d 100644 (file)
@@ -5795,8 +5795,8 @@ void ReplicatedPG::on_change()
 
   // take commit waiters; these are dups of what
   // apply_and_flush_repops() will requeue.
-  for (map<eversion_t, list<OpRequestRef> >::iterator p = waiting_for_ondisk.begin();
-       p != waiting_for_ondisk.end();
+  for (map<eversion_t, list<OpRequestRef> >::reverse_iterator p = waiting_for_ondisk.rbegin();
+       p != waiting_for_ondisk.rend();
        p++)
     requeue_ops(p->second);
   waiting_for_ondisk.clear();