Hi,
On 03/21/2018 04:03 AM, zhiyong.y...@intel.com wrote:
When vhost user PMD works in client mode to connect/reconnect virtio-user
with server mode, new thread sometimes may run to new_device before
queue_setup has been done, So have to wait until memory allocation is
done.
Release note is updated in the patch.
Signed-off-by: Zhiyong Yang <zhiyong.y...@intel.com>
---
doc/guides/rel_notes/release_18_05.rst | 7 +++++++
drivers/net/vhost/rte_eth_vhost.c | 9 +++++++++
2 files changed, 16 insertions(+)
diff --git a/doc/guides/rel_notes/release_18_05.rst
b/doc/guides/rel_notes/release_18_05.rst
index 3923dc253..7b301f021 100644
--- a/doc/guides/rel_notes/release_18_05.rst
+++ b/doc/guides/rel_notes/release_18_05.rst
@@ -41,6 +41,13 @@ New Features
Also, make sure to start the actual text at the margin.
=========================================================
+* **Added support for virtio-user server mode.**
+
+ In a container environment if the vhost-user backend restarts, there's no way
+ for it to reconnect to virtio-user. To address this, support for server mode
+ is added. In this mode the socket file is created by virtio-user, which the
+ backend then connects to. This means that if the backend restarts, it can
+ reconnect to virtio-user and continue communications.
I think this shouldn't be part of this patch.
API Changes
-----------
diff --git a/drivers/net/vhost/rte_eth_vhost.c
b/drivers/net/vhost/rte_eth_vhost.c
index 3aae01c39..2490bad0b 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -580,6 +580,15 @@ new_device(int vid)
eth_dev->data->numa_node = newnode;
#endif
+ /* The thread may run here before eth_dev->data->rx_queues or
+ * eth_dev->data->tx_queues have gotten valid memory, so have to
+ * wait until memory allocation is done.
+ */
+ while (!eth_dev->data->rx_queues ||
+ !eth_dev->data->tx_queues) {
+ usleep(1);
+ }
+
for (i = 0; i < eth_dev->data->nb_rx_queues; i++) {
vq = eth_dev->data->rx_queues[i];
if (vq == NULL)
I don't like the idea of polling here.
It looks like Junjie is addressing the problem in a different way [0],
do you confirm it would work in your case?
Thanks,
Maxime
[0]: http://dpdk.org/dev/patchwork/patch/36643/