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

[PATCH] 9p/xen: fix init sequence



From: Alex Zenla <alex@xxxxxxxxx>

Large amount of mount hangs observed during hotplugging of 9pfs devices. The
9pfs Xen driver attempts to initialize itself more than once, causing the
frontend and backend to disagree: the backend listens on a channel that the
frontend does not send on, resulting in stalled processing.

Only allow initialization of 9p frontend once.

Fixes: c15fe55d14b3b ("9p/xen: fix connection sequence")
Signed-off-by: Alex Zenla <alex@xxxxxxxxx>
Signed-off-by: Alexander Merritt <alexander@xxxxxxxxx>
Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
---
 net/9p/trans_xen.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/9p/trans_xen.c b/net/9p/trans_xen.c
index dfdbe1ca5338..0304e8a1616d 100644
--- a/net/9p/trans_xen.c
+++ b/net/9p/trans_xen.c
@@ -465,6 +465,7 @@ static int xen_9pfs_front_init(struct xenbus_device *dev)
                goto error;
        }
 
+       xenbus_switch_state(dev, XenbusStateInitialised);
        return 0;
 
  error_xenbus:
@@ -512,8 +513,10 @@ static void xen_9pfs_front_changed(struct xenbus_device 
*dev,
                break;
 
        case XenbusStateInitWait:
-               if (!xen_9pfs_front_init(dev))
-                       xenbus_switch_state(dev, XenbusStateInitialised);
+               if (dev->state != XenbusStateInitialising)
+                       break;
+
+               xen_9pfs_front_init(dev);
                break;
 
        case XenbusStateConnected:
-- 
2.43.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.