[PATCH net] xen-netback: only remove 'hotplug-status' when the vif is actually destroyed

Paul Durrant posted 1 patch 1 year, 8 months ago
Failed in applying to current master (apply log)
drivers/net/xen-netback/xenbus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH net] xen-netback: only remove 'hotplug-status' when the vif is actually destroyed
Posted by Paul Durrant 1 year, 8 months ago
Removing 'hotplug-status' in backend_disconnected() means that it will be
removed even in the case that the frontend unilaterally disconnects (which
it is free to do at any time). The consequence of this is that, when the
frontend attempts to re-connect, the backend gets stuck in 'InitWait'
rather than moving straight to 'Connected' (which it can do because the
hotplug script has already run).
Instead, the 'hotplug-status' mode should be removed in netback_remove()
i.e. when the vif really is going away.

Fixes: 0f4558ae9187 ("Revert "xen-netback: remove 'hotplug-status' once it has served its purpose"")
Signed-off-by: Paul Durrant <pdurrant@amazon.com>
---
Cc: Wei Liu <wei.liu@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: "Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>
---
 drivers/net/xen-netback/xenbus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c
index 990360d75cb6..e85b3c5d4acc 100644
--- a/drivers/net/xen-netback/xenbus.c
+++ b/drivers/net/xen-netback/xenbus.c
@@ -256,7 +256,6 @@ static void backend_disconnect(struct backend_info *be)
 		unsigned int queue_index;
 
 		xen_unregister_watchers(vif);
-		xenbus_rm(XBT_NIL, be->dev->nodename, "hotplug-status");
 #ifdef CONFIG_DEBUG_FS
 		xenvif_debugfs_delif(vif);
 #endif /* CONFIG_DEBUG_FS */
@@ -984,6 +983,7 @@ static int netback_remove(struct xenbus_device *dev)
 	struct backend_info *be = dev_get_drvdata(&dev->dev);
 
 	unregister_hotplug_status_watch(be);
+	xenbus_rm(XBT_NIL, dev->nodename, "hotplug-status");
 	if (be->vif) {
 		kobject_uevent(&dev->dev.kobj, KOBJ_OFFLINE);
 		backend_disconnect(be);
-- 
2.20.1


Re: [PATCH net] xen-netback: only remove 'hotplug-status' when the vif is actually destroyed
Posted by Juergen Gross 1 year, 7 months ago
On 01.09.22 13:55, Paul Durrant wrote:
> Removing 'hotplug-status' in backend_disconnected() means that it will be
> removed even in the case that the frontend unilaterally disconnects (which
> it is free to do at any time). The consequence of this is that, when the
> frontend attempts to re-connect, the backend gets stuck in 'InitWait'
> rather than moving straight to 'Connected' (which it can do because the
> hotplug script has already run).
> Instead, the 'hotplug-status' mode should be removed in netback_remove()
> i.e. when the vif really is going away.
> 
> Fixes: 0f4558ae9187 ("Revert "xen-netback: remove 'hotplug-status' once it has served its purpose"")
> Signed-off-by: Paul Durrant <pdurrant@amazon.com>

Reviewed-by: Juergen Gross <jgross@suse.com>


Juergen
Re: [PATCH net] xen-netback: only remove 'hotplug-status' when the vif is actually destroyed
Posted by patchwork-bot+netdevbpf@kernel.org 1 year, 8 months ago
Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Thu,  1 Sep 2022 12:55:54 +0100 you wrote:
> Removing 'hotplug-status' in backend_disconnected() means that it will be
> removed even in the case that the frontend unilaterally disconnects (which
> it is free to do at any time). The consequence of this is that, when the
> frontend attempts to re-connect, the backend gets stuck in 'InitWait'
> rather than moving straight to 'Connected' (which it can do because the
> hotplug script has already run).
> Instead, the 'hotplug-status' mode should be removed in netback_remove()
> i.e. when the vif really is going away.
> 
> [...]

Here is the summary with links:
  - [net] xen-netback: only remove 'hotplug-status' when the vif is actually destroyed
    https://git.kernel.org/netdev/net/c/c55f34b6aec2

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html