]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: requeue dup ops inline with in-progress ops
authorSage Weil <sage@inktank.com>
Mon, 27 Aug 2012 21:31:32 +0000 (14:31 -0700)
committerSage Weil <sage@inktank.com>
Mon, 27 Aug 2012 23:47:36 +0000 (16:47 -0700)
commit17ceec0d10cc6540c958e8f2d5ec1961750ced48
treee2823232972e068a6b3df6248776063385c62746
parentc7d11cd7b813a47167108c160358f70ec1aab7d6
osd: requeue dup ops inline with in-progress ops

We should requeue the dups along with the originals.  This avoids
situations where, after requeue, the dups are reordered with respect to
each other.  For example:

 - client sends A, B, C
 - osd receives A
 - connection drops
 - client sends A', B', C'
 - osd puts A' in waiting_for_ondisk, starts B' and C'
 - on_change() requeues everything

Final queue order (before this patch) is
    A, B', C', A'

After this patch, the resulting queue order is
    A, A', B', C'

Or somewhat more generally, it might be:

    A, A', B, B', B'', C', C'', D'', ....

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