By the way, one thing that makes me nervous is that we lack an explicit "request queue" or "per-queue" concept. State can either be per-BlockDriverState (shared state) or per-request, but not per-queue.
So far there hasn't been a need for per-queue state but there may be opportunities to eliminate locking if we can replace shared state with per-queue state. Stefan