bdev_virtio: call bdev_module_init_done only once
bdev_module_init_done could be called multiple times when more than device is available. Change-Id: I17ee63a818945359648953c4f8f67678d10e8907 Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/379864 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
c8f052836d
commit
65b6d8f495
@ -305,8 +305,14 @@ scan_target_finish(struct virtio_scsi_scan_base *base)
|
||||
spdk_bdev_register(&disk->bdev);
|
||||
}
|
||||
|
||||
TAILQ_REMOVE(&g_virtio_driver.init_ctrlrs, base->vdev, tailq);
|
||||
TAILQ_INSERT_TAIL(&g_virtio_driver.attached_ctrlrs, base->vdev, tailq);
|
||||
|
||||
spdk_dma_free(base);
|
||||
spdk_bdev_module_init_done(SPDK_GET_BDEV_MODULE(virtio_scsi));
|
||||
|
||||
if (TAILQ_EMPTY(&g_virtio_driver.init_ctrlrs)) {
|
||||
spdk_bdev_module_init_done(SPDK_GET_BDEV_MODULE(virtio_scsi));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -570,6 +576,8 @@ bdev_virtio_initialize(void)
|
||||
virtio_init_device(vdev, VIRTIO_SCSI_DEV_SUPPORTED_FEATURES);
|
||||
virtio_dev_start(vdev);
|
||||
|
||||
TAILQ_INSERT_TAIL(&g_virtio_driver.init_ctrlrs, vdev, tailq);
|
||||
|
||||
base->vdev = vdev;
|
||||
TAILQ_INIT(&base->found_disks);
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/queue.h>
|
||||
|
||||
#define VIRTIO_MAX_RX_QUEUES 128U
|
||||
#define VIRTIO_MAX_TX_QUEUES 128U
|
||||
@ -52,6 +53,8 @@ struct virtio_dev {
|
||||
|
||||
/** Modern/legacy virtio device flag. */
|
||||
uint8_t modern;
|
||||
|
||||
TAILQ_ENTRY(virtio_dev) tailq;
|
||||
};
|
||||
|
||||
struct virtio_req {
|
||||
|
@ -43,7 +43,10 @@
|
||||
#include "virtio_logs.h"
|
||||
#include "virtio_queue.h"
|
||||
|
||||
struct virtio_driver g_virtio_driver;
|
||||
struct virtio_driver g_virtio_driver = {
|
||||
.init_ctrlrs = TAILQ_HEAD_INITIALIZER(g_virtio_driver.init_ctrlrs),
|
||||
.attached_ctrlrs = TAILQ_HEAD_INITIALIZER(g_virtio_driver.attached_ctrlrs),
|
||||
};
|
||||
|
||||
/*
|
||||
* Following macros are derived from linux/pci_regs.h, however,
|
||||
|
@ -238,6 +238,8 @@ struct vtpci_internal {
|
||||
|
||||
struct virtio_driver {
|
||||
struct vtpci_internal internal[128];
|
||||
TAILQ_HEAD(, virtio_dev) init_ctrlrs;
|
||||
TAILQ_HEAD(, virtio_dev) attached_ctrlrs;
|
||||
};
|
||||
|
||||
extern struct virtio_driver g_virtio_driver;
|
||||
|
Loading…
Reference in New Issue
Block a user