Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1603433

Re: [PATCH] HV: properly delay KVP packets when negotiation is in progress

From Vitaly Kuznetsov <vkuznets@redhat.com>
Newsgroups linux.kernel
Subject Re: [PATCH] HV: properly delay KVP packets when negotiation is in progress
Date 2017-03-17 17:20 +0100
Message-ID <tm2LD-KO-7@gated-at.bofh.it> (permalink)
References <tlJJ0-379-11@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Long Li <longli@microsoft.com> writes:

> The host may send multiple KVP packets before the negotiation with daemon
> is finished. We need to keep those packets in ring buffer until the daemon
> is negotiated and connected.

The patch looks OK but previously we always presumed that this can't
happen for util drivers and host will never send a new request before we
answer to the previous one. If this is not true we may have more issues
which need fixing as all three drivers we have are written in a
'transaction' fashion.

So my question would be: can the host send multiple (KVP) packets
_after_ the negotiation with daemon is finished?


>
> This patch is based on the work of Nick Meier <Nick.Meier@microsoft.com>
>
> Signed-off-by: Long Li <longli@microsoft.com>
> ---
>  drivers/hv/hv_kvp.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c
> index de26371..b9f928d 100644
> --- a/drivers/hv/hv_kvp.c
> +++ b/drivers/hv/hv_kvp.c
> @@ -628,16 +628,17 @@ void hv_kvp_onchannelcallback(void *context)
>  		     NEGO_IN_PROGRESS,
>  		     NEGO_FINISHED} host_negotiatied = NEGO_NOT_STARTED;
>
> -	if (host_negotiatied == NEGO_NOT_STARTED &&
> -	    kvp_transaction.state < HVUTIL_READY) {
> +	if (kvp_transaction.state < HVUTIL_READY) {
>  		/*
>  		 * If userspace daemon is not connected and host is asking
>  		 * us to negotiate we need to delay to not lose messages.
>  		 * This is important for Failover IP setting.
>  		 */
> -		host_negotiatied = NEGO_IN_PROGRESS;
> -		schedule_delayed_work(&kvp_host_handshake_work,
> +		if (host_negotiatied == NEGO_NOT_STARTED) {
> +			host_negotiatied = NEGO_IN_PROGRESS;
> +			schedule_delayed_work(&kvp_host_handshake_work,
>  				      HV_UTIL_NEGO_TIMEOUT * HZ);
> +		}
>  		return;
>  	}
>  	if (kvp_transaction.state > HVUTIL_READY)

-- 
  Vitaly

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] HV: properly delay KVP packets when negotiation is in  progress Long Li <longli@microsoft.com> - 2017-03-16 21:00 +0100
  Re: [PATCH] HV: properly delay KVP packets when negotiation is in progress "Joshua R. Poulson" <jrp@pun.org> - 2017-03-16 21:10 +0100
  Re: [PATCH] HV: properly delay KVP packets when negotiation is in progress Vitaly Kuznetsov <vkuznets@redhat.com> - 2017-03-17 17:20 +0100
    RE: [PATCH] HV: properly delay KVP packets when negotiation is in  progress Long Li <longli@microsoft.com> - 2017-03-20 03:50 +0100
      RE: [PATCH] HV: properly delay KVP packets when negotiation is in  progress Long Li <longli@microsoft.com> - 2017-03-21 00:30 +0100

csiph-web