nvme: simplify plug/unplug

bdrv_io_plug/bdrv_io_unplug take care of keeping a nesting count,
so change s->plugged to just a bool.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20180813144320.12382-2-pbonzini@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
Paolo Bonzini 2018-08-13 16:43:20 +02:00 committed by Fam Zheng
parent 9582f357bb
commit 2f0d8947a6

View File

@ -104,7 +104,7 @@ typedef struct {
uint64_t nsze; /* Namespace size reported by identify command */ uint64_t nsze; /* Namespace size reported by identify command */
int nsid; /* The namespace id to read/write data. */ int nsid; /* The namespace id to read/write data. */
uint64_t max_transfer; uint64_t max_transfer;
int plugged; bool plugged;
CoMutex dma_map_lock; CoMutex dma_map_lock;
CoQueue dma_flush_queue; CoQueue dma_flush_queue;
@ -1101,7 +1101,8 @@ static void nvme_attach_aio_context(BlockDriverState *bs,
static void nvme_aio_plug(BlockDriverState *bs) static void nvme_aio_plug(BlockDriverState *bs)
{ {
BDRVNVMeState *s = bs->opaque; BDRVNVMeState *s = bs->opaque;
s->plugged++; assert(!s->plugged);
s->plugged = true;
} }
static void nvme_aio_unplug(BlockDriverState *bs) static void nvme_aio_unplug(BlockDriverState *bs)
@ -1109,14 +1110,13 @@ static void nvme_aio_unplug(BlockDriverState *bs)
int i; int i;
BDRVNVMeState *s = bs->opaque; BDRVNVMeState *s = bs->opaque;
assert(s->plugged); assert(s->plugged);
if (!--s->plugged) { s->plugged = false;
for (i = 1; i < s->nr_queues; i++) { for (i = 1; i < s->nr_queues; i++) {
NVMeQueuePair *q = s->queues[i]; NVMeQueuePair *q = s->queues[i];
qemu_mutex_lock(&q->lock); qemu_mutex_lock(&q->lock);
nvme_kick(s, q); nvme_kick(s, q);
nvme_process_completion(s, q); nvme_process_completion(s, q);
qemu_mutex_unlock(&q->lock); qemu_mutex_unlock(&q->lock);
}
} }
} }