[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 52/71] block/nvme: Fix bdrv_refresh_filename()
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 52/71] block/nvme: Fix bdrv_refresh_filename() |
Date: |
Mon, 25 Feb 2019 16:20:34 +0100 |
From: Max Reitz <address@hidden>
Currently, nvme's bdrv_refresh_filename() is an exact copy of null's
implementation. However, for null, "null-co://" and "null-aio://" are
indeed valid filenames -- for nvme, they are not, as a device address is
still required.
The correct implementation should generate a filename of the form
"nvme://[PCI address]/[namespace]" (as the comment above
nvme_parse_filename() describes).
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>
---
block/nvme.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index 6b5845644b..0684bbd077 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -111,6 +111,9 @@ typedef struct {
/* Total size of mapped qiov, accessed under dma_map_lock */
int dma_map_count;
+
+ /* PCI address (required for nvme_refresh_filename()) */
+ char *device;
} BDRVNVMeState;
#define NVME_BLOCK_OPT_DEVICE "device"
@@ -557,6 +560,7 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
qemu_co_mutex_init(&s->dma_map_lock);
qemu_co_queue_init(&s->dma_flush_queue);
+ s->device = g_strdup(device);
s->nsid = namespace;
s->aio_context = bdrv_get_aio_context(bs);
ret = event_notifier_init(&s->irq_notifier, 0);
@@ -729,6 +733,8 @@ static void nvme_close(BlockDriverState *bs)
event_notifier_cleanup(&s->irq_notifier);
qemu_vfio_pci_unmap_bar(s->vfio, 0, (void *)s->regs, 0, NVME_BAR_SIZE);
qemu_vfio_close(s->vfio);
+
+ g_free(s->device);
}
static int nvme_file_open(BlockDriverState *bs, QDict *options, int flags,
@@ -1055,21 +1061,10 @@ static int nvme_reopen_prepare(BDRVReopenState
*reopen_state,
static void nvme_refresh_filename(BlockDriverState *bs)
{
- const QDictEntry *e;
-
- for (e = qdict_first(bs->full_open_options); e;
- e = qdict_next(bs->full_open_options, e))
- {
- /* These options can be ignored */
- if (strcmp(qdict_entry_key(e), "filename") &&
- strcmp(qdict_entry_key(e), "driver"))
- {
- return;
- }
- }
+ BDRVNVMeState *s = bs->opaque;
- snprintf(bs->exact_filename, sizeof(bs->exact_filename), "%s://",
- bs->drv->format_name);
+ snprintf(bs->exact_filename, sizeof(bs->exact_filename), "nvme://%s/%i",
+ s->device, s->nsid);
}
static void nvme_refresh_limits(BlockDriverState *bs, Error **errp)
--
2.20.1
- [Qemu-devel] [PULL 43/71] block/nbd: Make bdrv_dirname() return NULL, (continued)
- [Qemu-devel] [PULL 43/71] block/nbd: Make bdrv_dirname() return NULL, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 31/71] block: Respect backing bs in bdrv_refresh_filename, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 30/71] block: Add BDS.auto_backing_file, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 27/71] block: Use bdrv_refresh_filename() to pull, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 34/71] iotests: Add test for backing file overrides, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 45/71] block: Use bdrv_dirname() for relative filenames, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 47/71] block: Add strong_runtime_opts to BlockDriver, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 46/71] iotests: Add quorum case to test 110, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 49/71] block: Generically refresh runtime options, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 48/71] block: Add BlockDriver.bdrv_gather_child_options, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 52/71] block/nvme: Fix bdrv_refresh_filename(),
Kevin Wolf <=
- [Qemu-devel] [PULL 53/71] block/curl: Harmonize option defaults, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 54/71] block/curl: Implement bdrv_refresh_filename(), Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 55/71] block/null: Generate filename even with latency-ns, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 56/71] block: BDS options may lack the "driver" option, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 51/71] block: Do not copy exact_filename from format file, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 50/71] block: Purify .bdrv_refresh_filename(), Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 58/71] iotests: Re-add filename filters, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 59/71] iotests: Fix 237 for Python 2.x, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 60/71] iotests: Remove superfluous rm from 232, Kevin Wolf, 2019/02/25
- [Qemu-devel] [PULL 57/71] iotests: Test json:{} filenames of internal BDSs, Kevin Wolf, 2019/02/25