Re: [PATCH] [linux-4.4.y only] HV: properly delay KVP packets when negotiation is in progress

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 12, 2018 at 02:52:46AM +0000, Dexuan Cui wrote:
> 
> The host may send multiple negotiation packets
> (due to timeout) before the KVP user-mode daemon
> is connected. KVP user-mode daemon is connected.
> We need to defer processing those packets
> until the daemon is negotiated and connected.
> It's okay for guest to respond
> to all negotiation packets.
> 
> In addition, the host may send multiple staged
> KVP requests as soon as negotiation is done.
> We need to properly process those packets using one
> tasklet for exclusive access to ring buffer.
> 
> This patch is based on the work of
> Nick Meier <Nick.Meier@xxxxxxxxxxxxx>.
> 
> Signed-off-by: Long Li <longli@xxxxxxxxxxxxx>
> Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> 
> The above is the original changelog of
> a3ade8cc474d ("HV: properly delay KVP packets when negotiation is in progress"
> 
> Here I re-worked the original patch because the mainline version
> can't work for the linux-4.4.y branch, on which channel->callback_event
> doesn't exist yet. In the mainline, channel->callback_event was added by:
> 631e63a9f346 ("vmbus: change to per channel tasklet"). Here we don't want
> to backport it to v4.4, as it requires extra supporting changes and fixes,
> which are unnecessary as to the KVP bug we're trying to resolve.
> 
> NOTE: before this patch is used, we should cherry-pick the other related
> 3 patches from the mainline first:
> 
> 2d0c3b5 ("Drivers: hv: utils: Invoke the poll function after handshake")
> b9830d1 ("Drivers: hv: util: Pass the channel information during the init call")
> 4dbfc2e ("Drivers: hv: kvp: fix IP Failover")
> 
> And, actually it would better if we can cherry-pick more fixes from the
> mainline first (the 3 above patches are also included in this 27-patch list):
> 
> 01 b003596 Drivers: hv: utils: use memdup_user in hvt_op_write
> 02 2d0c3b5 Drivers: hv: utils: Invoke the poll function after handshake
> 03 1f75338 Drivers: hv: utils: fix memory leak on on_msg() failure
> 04 a72f3a4 Drivers: hv: utils: rename outmsg_lock
> 05 a150256 Drivers: hv: utils: introduce HVUTIL_TRANSPORT_DESTROY mode
> 06 9420098 Drivers: hv: utils: fix crash when device is removed from host side
> 07 77b744a Drivers: hv: utils: fix hvt_op_poll() return value on transport destroy
> 08 b9830d1 Drivers: hv: util: Pass the channel information during the init call
> 09 e66853b Drivers: hv: utils: Remove util transport handler from list if registration fails
> 10 4dbfc2e Drivers: hv: kvp: fix IP Failover
> 11 e0fa3e5 Drivers: hv: utils: fix a race on userspace daemons registration
> 12 497af84 Drivers: hv: utils: Continue to poll VSS channel after handling requests.
> 13 db886e4 Drivers: hv: utils: Check VSS daemon is listening before a hot backup
> 14 abeda47 Drivers: hv: utils: Rename version definitions to reflect protocol version.
> 15 2e338f7 Drivers: hv: utils: Use TimeSync samples to adjust the clock after boot.
> 16 8e1d260 Drivers: hv: utils: Support TimeSync version 4.0 protocol samples.
> 17 3ba1eb1 Drivers: hv: hv_util: Avoid dynamic allocation in time synch
> 18 3da0401b Drivers: hv: utils: Fix the mapping between host version and protocol to use
> 19 23d2cc0 Drivers: hv: vss: Improve log messages.
> 20 b357fd3 Drivers: hv: vss: Operation timeouts should match host expectation
> 21 1724462 hv_util: switch to using timespec64
> 22 a165645 Drivers: hv: vmbus: Use all supported IC versions to negotiate
> 23 1274a69 Drivers: hv: Log the negotiated IC versions.
> 24 bb6a4db Drivers: hv: util: Fix a typo
> 25 e9c18ae Drivers: hv: util: move waiting for release to hv_utils_transport itself
> 26 bdc1dd4 vmbus: fix spelling errors
> 27 ddce54b Drivers: hv: kvp: Use MAX_ADAPTER_ID_SIZE for translating adapter id
> 
> This to to say, we're requesting a backport of 4 patches or 28 patches.
> If 28 patches seem too many, we hope at least the 4 patches can be backported.

28 seems odd, there's lots of things in there that you do not need.

So 4 is good, can you send all 4 as a patch series, properly backported
and tested with this patch as the last one?

> The patches can be applied cleanly to the latest v4.4 branch (currently it's
> v4.4.160).

But, I really want to know why people are still trying to use the 4.4
kernel right now for a "general purpose" system.  They should be using
4.9 at the very least by now, 4.4 is not a good idea at all.  Why can
you not just move your users to 4.9 instead of a newer 4.4 kernel?  It
should be the exact same, right?

thanks,

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux