[v1] vhost: fix vring disable fail in async transfer
diff mbox series

Message ID 20200723053801.3616928-1-patrick.fu@intel.com
State Rejected, archived
Delegated to: Maxime Coquelin
Headers show
Series
  • [v1] vhost: fix vring disable fail in async transfer
Related show

Checks

Context Check Description
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Patrick Fu July 23, 2020, 5:38 a.m. UTC
From: Patrick Fu <patrick.fu@intel.com>

Async inflight packets is checked when front end virtio requests to
disable vring. If inflight packets exists, vring disabling will fail.
However, there is no good way for application to get notified before
vring is disabled and properly complete inflight packets. This patch
moves the inflight packets check from vring disabling time to the vring
enabling time, so that applications have chances to drain out pending
packets.

Fixes: 78639d54563a ("vhost: introduce async enqueue registration API")

Signed-off-by: Patrick Fu <patrick.fu@intel.com>
---
 lib/librte_vhost/vhost_user.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Patrick Fu July 23, 2020, 6:17 a.m. UTC | #1
Hi,

Sorry but I'd like to withdraw this patch as the issue could be addressed by applications to register a pre_msg_handler.

Thanks,

Patrick

> -----Original Message-----
> From: Fu, Patrick <patrick.fu@intel.com>
> Sent: Thursday, July 23, 2020 1:38 PM
> To: dev@dpdk.org; maxime.coquelin@redhat.com; Xia, Chenbo
> <chenbo.xia@intel.com>
> Cc: Fu, Patrick <patrick.fu@intel.com>
> Subject: [PATCH v1] vhost: fix vring disable fail in async transfer
> 
> From: Patrick Fu <patrick.fu@intel.com>
> 
> Async inflight packets is checked when front end virtio requests to disable
> vring. If inflight packets exists, vring disabling will fail.
> However, there is no good way for application to get notified before vring is
> disabled and properly complete inflight packets. This patch moves the inflight
> packets check from vring disabling time to the vring enabling time, so that
> applications have chances to drain out pending packets.
> 
> Fixes: 78639d54563a ("vhost: introduce async enqueue registration API")
> 
> Signed-off-by: Patrick Fu <patrick.fu@intel.com>
> ---
>  lib/librte_vhost/vhost_user.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> index 9ddeae362..36da1380a 100644
> --- a/lib/librte_vhost/vhost_user.c
> +++ b/lib/librte_vhost/vhost_user.c
> @@ -2038,9 +2038,9 @@ vhost_user_set_vring_enable(struct virtio_net
> **pdev,
>  		"set queue enable: %d to qp idx: %d\n",
>  		enable, index);
> 
> -	if (!enable && dev->virtqueue[index]->async_registered) {
> +	if (enable && dev->virtqueue[index]->async_registered) {
>  		if (dev->virtqueue[index]->async_pkts_inflight_n) {
> -			VHOST_LOG_CONFIG(ERR, "failed to disable vring. "
> +			VHOST_LOG_CONFIG(ERR, "failed to enable vring. "
>  			"async inflight packets must be completed first\n");
>  			return RTE_VHOST_MSG_RESULT_ERR;
>  		}
> --
> 2.18.4

Patch
diff mbox series

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 9ddeae362..36da1380a 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -2038,9 +2038,9 @@  vhost_user_set_vring_enable(struct virtio_net **pdev,
 		"set queue enable: %d to qp idx: %d\n",
 		enable, index);
 
-	if (!enable && dev->virtqueue[index]->async_registered) {
+	if (enable && dev->virtqueue[index]->async_registered) {
 		if (dev->virtqueue[index]->async_pkts_inflight_n) {
-			VHOST_LOG_CONFIG(ERR, "failed to disable vring. "
+			VHOST_LOG_CONFIG(ERR, "failed to enable vring. "
 			"async inflight packets must be completed first\n");
 			return RTE_VHOST_MSG_RESULT_ERR;
 		}