mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[XENBUS] Allow user of xenbus_read_driver_state() to distinguish
absence of state field in xenstore by returning XenbusStateUnknown rather than XenbusStateClosed. Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
1 parent
35f4fc005c
commit
e7b9a93ed4
10 files changed
+11
-17
No files matched your search
@@ -343,7 +343,6 @@ static void backend_changed(struct xenbus_device *dev,
|
||||
case XenbusStateInitialising:
|
||||
case XenbusStateInitWait:
|
||||
case XenbusStateInitialised:
|
||||
case XenbusStateUnknown:
|
||||
break;
|
||||
|
||||
case XenbusStateConnected:
|
||||
@@ -354,10 +353,10 @@ static void backend_changed(struct xenbus_device *dev,
|
||||
tpmif_set_connected_state(tp, 0);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
if (tp->is_suspended == 0) {
|
||||
if (tp->is_suspended == 0)
|
||||
device_unregister(&dev->dev);
|
||||
}
|
||||
xenbus_switch_state(dev, XenbusStateClosed);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -331,12 +331,11 @@ static void frontend_changed(struct xenbus_device *dev,
|
||||
xenbus_switch_state(dev, XenbusStateClosing);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
device_unregister(&dev->dev);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateInitWait:
|
||||
default:
|
||||
xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
|
||||
frontend_state);
|
||||
|
||||
@@ -256,10 +256,10 @@ static void backend_changed(struct xenbus_device *dev,
|
||||
DPRINTK("blkfront:backend_changed.\n");
|
||||
|
||||
switch (backend_state) {
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateInitialising:
|
||||
case XenbusStateInitWait:
|
||||
case XenbusStateInitialised:
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
break;
|
||||
|
||||
|
||||
@@ -267,12 +267,11 @@ static void tap_frontend_changed(struct xenbus_device *dev,
|
||||
xenbus_switch_state(dev, XenbusStateClosing);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
device_unregister(&dev->dev);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateInitWait:
|
||||
default:
|
||||
xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
|
||||
frontend_state);
|
||||
|
||||
@@ -260,14 +260,13 @@ static void frontend_changed(struct xenbus_device *dev,
|
||||
xenbus_switch_state(dev, XenbusStateClosing);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
if (be->netif != NULL)
|
||||
kobject_uevent(&dev->dev.kobj, KOBJ_OFFLINE);
|
||||
device_unregister(&dev->dev);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateInitWait:
|
||||
default:
|
||||
xenbus_dev_fatal(dev, -EINVAL, "saw state %d at frontend",
|
||||
frontend_state);
|
||||
|
||||
@@ -181,6 +181,7 @@ static void pciback_frontend_changed(struct xenbus_device *xdev,
|
||||
xenbus_switch_state(xdev, XenbusStateClosing);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
dev_dbg(&xdev->dev, "frontend is gone! unregister device\n");
|
||||
device_unregister(&xdev->dev);
|
||||
|
||||
@@ -225,6 +225,7 @@ static void pcifront_backend_changed(struct xenbus_device *xdev,
|
||||
pcifront_try_disconnect(pdev);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
dev_warn(&xdev->dev, "backend went away!\n");
|
||||
pcifront_try_disconnect(pdev);
|
||||
|
||||
@@ -34,7 +34,6 @@ struct backend_info
|
||||
|
||||
/* watch front end for changes */
|
||||
struct xenbus_watch backend_watch;
|
||||
enum xenbus_state frontend_state;
|
||||
};
|
||||
|
||||
static void maybe_connect(struct backend_info *be);
|
||||
@@ -143,8 +142,6 @@ static void frontend_changed(struct xenbus_device *dev,
|
||||
struct backend_info *be = dev->dev.driver_data;
|
||||
int err;
|
||||
|
||||
be->frontend_state = frontend_state;
|
||||
|
||||
switch (frontend_state) {
|
||||
case XenbusStateInitialising:
|
||||
case XenbusStateInitialised:
|
||||
@@ -162,13 +159,12 @@ static void frontend_changed(struct xenbus_device *dev,
|
||||
be->instance = -1;
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateClosed:
|
||||
device_unregister(&be->dev->dev);
|
||||
tpmback_remove(dev);
|
||||
break;
|
||||
|
||||
case XenbusStateUnknown:
|
||||
case XenbusStateInitWait:
|
||||
default:
|
||||
xenbus_dev_fatal(dev, -EINVAL,
|
||||
"saw state %d at frontend",
|
||||
|
||||
@@ -274,7 +274,7 @@ enum xenbus_state xenbus_read_driver_state(const char *path)
|
||||
enum xenbus_state result;
|
||||
int err = xenbus_gather(XBT_NIL, path, "state", "%d", &result, NULL);
|
||||
if (err)
|
||||
result = XenbusStateClosed;
|
||||
result = XenbusStateUnknown;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ int xenbus_free_evtchn(struct xenbus_device *dev, int port);
|
||||
|
||||
/**
|
||||
* Return the state of the driver rooted at the given store path, or
|
||||
* XenbusStateClosed if no state can be read.
|
||||
* XenbusStateUnknown if no state can be read.
|
||||
*/
|
||||
enum xenbus_state xenbus_read_driver_state(const char *path);
|
||||
|
||||
|
||||