[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 16/17] block/nvme: Check BDRVNVMeState::plugged out of nvme_kick(
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 16/17] block/nvme: Check BDRVNVMeState::plugged out of nvme_kick() |
Date: |
Thu, 25 Jun 2020 20:48:37 +0200 |
The queues are tied to the hardware, not to the block driver.
As this function doesn't need to know about the BDRVNVMeState,
move the 'plugged' check to the caller.
Since in nvme_aio_unplug() we know that s->plugged is false,
we don't need the check.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
block/nvme.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index 0f7cc568ef..b335dfdb73 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -246,9 +246,9 @@ fail:
}
/* With q->lock */
-static void nvme_kick(BDRVNVMeState *s, NVMeQueuePair *q)
+static void nvme_kick(NVMeQueuePair *q)
{
- if (s->plugged || !q->need_kick) {
+ if (!q->need_kick) {
return;
}
trace_nvme_kick(q->index);
@@ -406,7 +406,9 @@ static void nvme_submit_command(BDRVNVMeState *s,
NVMeQueuePair *q,
q->sq.tail * NVME_SQ_ENTRY_BYTES, cmd, sizeof(*cmd));
q->sq.tail = (q->sq.tail + 1) % NVME_QUEUE_SIZE;
q->need_kick++;
- nvme_kick(s, q);
+ if (!s->plugged) {
+ nvme_kick(q);
+ }
nvme_process_completion(s, q);
qemu_mutex_unlock(&q->lock);
}
@@ -1311,7 +1313,7 @@ static void nvme_aio_unplug(BlockDriverState *bs)
for (i = QUEUE_INDEX_IO(0); i < s->nr_queues; i++) {
NVMeQueuePair *q = s->queues[i];
qemu_mutex_lock(&q->lock);
- nvme_kick(s, q);
+ nvme_kick(q);
nvme_process_completion(s, q);
qemu_mutex_unlock(&q->lock);
}
--
2.21.3
- [PATCH 10/17] block/nvme: Simplify nvme_init_queue() arguments, (continued)
- [PATCH 10/17] block/nvme: Simplify nvme_init_queue() arguments, Philippe Mathieu-Daudé, 2020/06/25
- [PATCH 11/17] block/nvme: Simplify nvme_create_queue_pair() arguments, Philippe Mathieu-Daudé, 2020/06/25
- [PATCH 12/17] block/nvme: Simplify nvme_kick trace event, Philippe Mathieu-Daudé, 2020/06/25
- [PATCH 13/17] block/nvme: Simplify completion trace events, Philippe Mathieu-Daudé, 2020/06/25
- [PATCH 14/17] block/nvme: Replace BDRV_POLL_WHILE by AIO_WAIT_WHILE, Philippe Mathieu-Daudé, 2020/06/25
- [PATCH 16/17] block/nvme: Check BDRVNVMeState::plugged out of nvme_kick(),
Philippe Mathieu-Daudé <=
- [RFC PATCH 15/17] block/nvme: Use per-queue AIO context, Philippe Mathieu-Daudé, 2020/06/25
- [PATCH 17/17] block/nvme: Check BDRVNVMeState::plugged out of nvme_process_completion, Philippe Mathieu-Daudé, 2020/06/25
- Re: [PATCH 00/17] block/nvme: Various cleanups required to use multiple queues, no-reply, 2020/06/25