Re: [Xen-devel] [PATCH net-next 2/3] xen-netback: switch state to InitWait at the end of netback_probe()...

2019-12-17 Thread David Miller
From: Paul Durrant 
Date: Tue, 17 Dec 2019 13:32:17 +

> ...as the comment above the function states.
> 
> The switch to Initialising at the start of the function is somewhat bogus
> as the toolstack will have set that initial state anyway. To behave
> correctly, a backend should switch to InitWait once it has set up all
> xenstore values that may be required by a initialising frontend. This
> patch calls backend_switch_state() to make the transition at the
> appropriate point.
> 
> NOTE: backend_switch_state() ignores errors from xenbus_switch_state()
>   and so this patch removes an error path from netback_probe(). This
>   means a failure to change state at this stage (in the absence of
>   other failures) will leave the device instantiated. This is highly
>   unlikley to happen as a failure to change state would indicate a
>   failure to write to xenstore, and that will trigger other error
>   paths. Also, a 'stuck' device can still be cleaned up using 'unbind'
>   in any case.
> 
> Signed-off-by: Paul Durrant 

Applied.

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH net-next 2/3] xen-netback: switch state to InitWait at the end of netback_probe()...

2019-12-17 Thread Wei Liu
On Tue, Dec 17, 2019 at 01:32:17PM +, Paul Durrant wrote:
> ...as the comment above the function states.
> 
> The switch to Initialising at the start of the function is somewhat bogus
> as the toolstack will have set that initial state anyway. To behave
> correctly, a backend should switch to InitWait once it has set up all
> xenstore values that may be required by a initialising frontend. This
> patch calls backend_switch_state() to make the transition at the
> appropriate point.
> 
> NOTE: backend_switch_state() ignores errors from xenbus_switch_state()
>   and so this patch removes an error path from netback_probe(). This
>   means a failure to change state at this stage (in the absence of
>   other failures) will leave the device instantiated. This is highly
>   unlikley to happen as a failure to change state would indicate a
>   failure to write to xenstore, and that will trigger other error
>   paths. Also, a 'stuck' device can still be cleaned up using 'unbind'
>   in any case.
> 
> Signed-off-by: Paul Durrant 

Acked-by: Wei Liu 

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH net-next 2/3] xen-netback: switch state to InitWait at the end of netback_probe()...

2019-12-17 Thread Paul Durrant
...as the comment above the function states.

The switch to Initialising at the start of the function is somewhat bogus
as the toolstack will have set that initial state anyway. To behave
correctly, a backend should switch to InitWait once it has set up all
xenstore values that may be required by a initialising frontend. This
patch calls backend_switch_state() to make the transition at the
appropriate point.

NOTE: backend_switch_state() ignores errors from xenbus_switch_state()
  and so this patch removes an error path from netback_probe(). This
  means a failure to change state at this stage (in the absence of
  other failures) will leave the device instantiated. This is highly
  unlikley to happen as a failure to change state would indicate a
  failure to write to xenstore, and that will trigger other error
  paths. Also, a 'stuck' device can still be cleaned up using 'unbind'
  in any case.

Signed-off-by: Paul Durrant 
---
Cc: Wei Liu 
Cc: Paul Durrant 
Cc: "David S. Miller" 
---
 drivers/net/xen-netback/xenbus.c | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c
index bb61316d79de..682e5e20971b 100644
--- a/drivers/net/xen-netback/xenbus.c
+++ b/drivers/net/xen-netback/xenbus.c
@@ -992,11 +992,6 @@ static int netback_probe(struct xenbus_device *dev,
be->dev = dev;
dev_set_drvdata(>dev, be);
 
-   be->state = XenbusStateInitialising;
-   err = xenbus_switch_state(dev, XenbusStateInitialising);
-   if (err)
-   goto fail;
-
sg = 1;
 
do {
@@ -1098,6 +1093,8 @@ static int netback_probe(struct xenbus_device *dev,
if (err)
pr_debug("Error writing feature-ctrl-ring\n");
 
+   backend_switch_state(be, XenbusStateInitWait);
+
script = xenbus_read(XBT_NIL, dev->nodename, "script", NULL);
if (IS_ERR(script)) {
err = PTR_ERR(script);
-- 
2.20.1


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel