[dpdk-dev] [PATCH v2 14/17] vhost: add support to postcopy's end request
Ilya Maximets
i.maximets at samsung.com
Tue Oct 2 16:18:41 CEST 2018
On 02.10.2018 12:36, Maxime Coquelin wrote:
> The master sends this message before stopping handling
> userfaults, so that the backend closes the userfaultfd.
>
> The master waits for the slave to acknowledge the request
> with an empty 64bits payload for synchronization purpose.
>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert at redhat.com>
> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> ---
> lib/librte_vhost/vhost_user.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> index b207de6e0..ee7337ac8 100644
> --- a/lib/librte_vhost/vhost_user.c
> +++ b/lib/librte_vhost/vhost_user.c
> @@ -77,6 +77,7 @@ static const char *vhost_message_str[VHOST_USER_MAX] = {
> [VHOST_USER_CRYPTO_CLOSE_SESS] = "VHOST_USER_CRYPTO_CLOSE_SESS",
> [VHOST_USER_POSTCOPY_ADVISE] = "VHOST_USER_POSTCOPY_ADVISE",
> [VHOST_USER_POSTCOPY_LISTEN] = "VHOST_USER_POSTCOPY_LISTEN",
> + [VHOST_USER_POSTCOPY_END] = "VHOST_USER_POSTCOPY_END",
> };
>
> /* The possible results of a message handling function */
> @@ -1640,6 +1641,25 @@ vhost_user_set_postcopy_listen(struct virtio_net **pdev,
> return VH_RESULT_OK;
> }
>
> +static int
> +vhost_user_postcopy_end(struct virtio_net **pdev, struct VhostUserMsg *msg,
> + int main_fd __rte_unused)
> +{
> + struct virtio_net *dev = *pdev;
> +
> + dev->postcopy_listening = 0;
> + if (dev->postcopy_ufd >= 0) {
> + close(dev->postcopy_ufd);
> + dev->postcopy_ufd = -1;
> + }
> +
> + msg->payload.u64 = 0;
> + msg->size = sizeof(msg->payload.u64);
> + msg->fd_num = 0;
> +
> + return 0;
I think, it should return VH_RESULT_REPLY as the reply is
mandatory according to specification. In pair with change
in patch #1 this will not produce double replies.
> +}
> +
> typedef int (*vhost_message_handler_t)(struct virtio_net **pdev,
> struct VhostUserMsg *msg,
> int main_fd);
> @@ -1669,6 +1689,7 @@ static vhost_message_handler_t vhost_message_handlers[VHOST_USER_MAX] = {
> [VHOST_USER_IOTLB_MSG] = vhost_user_iotlb_msg,
> [VHOST_USER_POSTCOPY_ADVISE] = vhost_user_set_postcopy_advise,
> [VHOST_USER_POSTCOPY_LISTEN] = vhost_user_set_postcopy_listen,
> + [VHOST_USER_POSTCOPY_END] = vhost_user_postcopy_end,
> };
>
>
>
More information about the dev
mailing list