diff --git a/lib/bdev/virtio/bdev_virtio.c b/lib/bdev/virtio/bdev_virtio.c index 21f502e63..b5d2bcc25 100644 --- a/lib/bdev/virtio/bdev_virtio.c +++ b/lib/bdev/virtio/bdev_virtio.c @@ -682,6 +682,11 @@ out: static void bdev_virtio_finish(void) { + struct virtio_dev *vdev, *next; + + TAILQ_FOREACH_SAFE(vdev, &g_virtio_driver.attached_ctrlrs, tailq, next) { + virtio_dev_free(vdev); + } } SPDK_LOG_REGISTER_TRACE_FLAG("virtio", SPDK_TRACE_VIRTIO) diff --git a/lib/bdev/virtio/rte_virtio/virtio_dev.c b/lib/bdev/virtio/rte_virtio/virtio_dev.c index 82dbace53..668d3001e 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_dev.c +++ b/lib/bdev/virtio/rte_virtio/virtio_dev.c @@ -304,6 +304,7 @@ virtio_dev_free(struct virtio_dev *dev) { uint32_t vdev_id = dev->id; + vtpci_reset(dev); virtio_free_queues(dev); vtpci_ops(dev)->free_vdev(dev); vtpci_deinit(vdev_id);