From a17d43161263ebe708f46e215d33bbd685cb4e76 Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Thu, 26 Oct 2017 11:06:35 +0200 Subject: [PATCH] bdev_virtio: fix setting name for modern pci devices It used to be NULL. Fixes: a85a4452 ("bdev_virtio/rpc: add construct_virtio_user_scsi_bdev") Change-Id: I490b41571e5667cf95b59b2e316006d1ef7381e8 Signed-off-by: Dariusz Stojaczyk Reviewed-on: https://review.gerrithub.io/383892 Tested-by: SPDK Automated Test System Reviewed-by: Pawel Wodkowski Reviewed-by: Daniel Verkamp --- lib/bdev/virtio/rte_virtio/virtio_pci.c | 28 ++++++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/bdev/virtio/rte_virtio/virtio_pci.c b/lib/bdev/virtio/rte_virtio/virtio_pci.c index a47716c82..270a65108 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_pci.c +++ b/lib/bdev/virtio/rte_virtio/virtio_pci.c @@ -645,13 +645,19 @@ next: return 0; } -static void +static int virtio_dev_pci_init(struct virtio_dev *vdev) { + vdev->name = spdk_sprintf_alloc("VirtioScsi%"PRIu32, vdev->id); + if (!vdev->name) { + return -1; + } + vtpci_read_dev_config(vdev, offsetof(struct virtio_scsi_config, num_queues), &vdev->max_queues, sizeof(vdev->max_queues)); vdev->max_queues += SPDK_VIRTIO_SCSI_QUEUE_NUM_FIXED; TAILQ_INSERT_TAIL(&g_virtio_driver.init_ctrlrs, vdev, tailq); + return 0; } static int @@ -698,7 +704,13 @@ pci_enum_virtio_probe_cb(void *ctx, struct spdk_pci_device *pci_dev) goto err; } vdev->modern = 1; - virtio_dev_pci_init(vdev); + + rc = virtio_dev_pci_init(vdev); + if (rc != 0) { + vtpci_deinit(vdev->id); + goto err; + } + return 0; } @@ -718,18 +730,18 @@ pci_enum_virtio_probe_cb(void *ctx, struct spdk_pci_device *pci_dev) } #endif - vdev->name = spdk_sprintf_alloc("VirtioScsi%"PRIu32, vdev->id); - if (!vdev->name) { - goto err; - } - rc = vtpci_init(vdev, &legacy_ops); if (rc != 0) { goto err; } vdev->modern = 0; - virtio_dev_pci_init(vdev); + rc = virtio_dev_pci_init(vdev); + if (rc != 0) { + vtpci_deinit(vdev->id); + goto err; + } + return 0; #endif