]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: preserve ordering when throttling races with missing/degraded requeue
authorSage Weil <sage@newdream.net>
Tue, 20 Sep 2011 01:23:10 +0000 (18:23 -0700)
committerSage Weil <sage@newdream.net>
Tue, 20 Sep 2011 01:23:10 +0000 (18:23 -0700)
commit46cfda7b8245d4f44d1194943cccb379840f3aa8
treeddb662b3710efeff2377f23aaa5e67ab68c7f31d
parent4fb3d34a405ebc6ab0a9080d53a003b857170f0a
osd: preserve ordering when throttling races with missing/degraded requeue

When we delay an op because the op_queue is full, we can violate the op
order:

 - op1 comes in, waits because object is missing
 - op2 comes in, throttles on op queue
 - op1 is requeued (no longer missing)
 - queue drains, op2 happens
 - op1 happens

To avoid this, if we delay, requeue ourselves... after whatever else is
on the queue.

Fixes: #1490
Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/OSD.cc
src/osd/OSD.h