diff --git a/block/linux-aio.c b/block/linux-aio.c index f53ae72e21fdf7cecdf7c1556bccd1b87fbd9418..77f17ad5965760444bc6b9c80d8a3dfa9ae9b142 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -360,8 +360,10 @@ void laio_io_unplug(BlockDriverState *bs, LinuxAioState *s, uint64_t dev_max_batch) { assert(s->io_q.plugged); + s->io_q.plugged--; + if (s->io_q.in_queue >= laio_max_batch(s, dev_max_batch) || - (--s->io_q.plugged == 0 && + (!s->io_q.plugged && !s->io_q.blocked && !QSIMPLEQ_EMPTY(&s->io_q.pending))) { ioq_submit(s); }