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

[MINI-OS PATCH 14/19] 9pfs: store bepath in struct struct dev_9pfs



Use struct dev_9pfs for storing the backend path of the device state
in order to avoid code duplication in init_9pfront() and
shutdown_9pfront().

Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
 9pfront.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/9pfront.c b/9pfront.c
index 895426d1..2bfc49b1 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -25,6 +25,7 @@ struct dev_9pfs {
     char nodename[20];
     unsigned int dom;
     char *backend;
+    char bepath[64];
 
     char *tag;
     const char *mnt;
@@ -1103,7 +1104,6 @@ void *init_9pfront(unsigned int id, const char *mnt)
     char *reason = "";
     xenbus_transaction_t xbt;
     int retry = 1;
-    char bepath[64] = { 0 };
     XenbusState state;
     unsigned int i;
     void *addr;
@@ -1137,11 +1137,12 @@ void *init_9pfront(unsigned int id, const char *mnt)
     if ( msg )
         goto err;
 
-    snprintf(bepath, sizeof(bepath), "%s/state", dev->backend);
-    free(xenbus_watch_path_token(XBT_NIL, bepath, bepath, &dev->events));
-    state = xenbus_read_integer(bepath);
+    snprintf(dev->bepath, sizeof(dev->bepath), "%s/state", dev->backend);
+    free(xenbus_watch_path_token(XBT_NIL, dev->bepath, dev->bepath,
+                                 &dev->events));
+    state = xenbus_read_integer(dev->bepath);
     while ( msg == NULL && state < XenbusStateInitWait )
-        msg = xenbus_wait_for_state_change(bepath, &state, &dev->events);
+        msg = xenbus_wait_for_state_change(dev->bepath, &state, &dev->events);
     if ( msg || state != XenbusStateInitWait )
     {
         reason = "illegal backend state";
@@ -1228,9 +1229,9 @@ void *init_9pfront(unsigned int id, const char *mnt)
         free(xenbus_transaction_end(xbt, 0, &retry));
     }
 
-    state = xenbus_read_integer(bepath);
+    state = xenbus_read_integer(dev->bepath);
     while ( msg == NULL && state < XenbusStateConnected )
-        msg = xenbus_wait_for_state_change(bepath, &state, &dev->events);
+        msg = xenbus_wait_for_state_change(dev->bepath, &state, &dev->events);
     if ( msg || state != XenbusStateConnected )
     {
         reason = "illegal backend state";
@@ -1263,8 +1264,6 @@ void *init_9pfront(unsigned int id, const char *mnt)
     free(xenbus_transaction_end(xbt, 1, &retry));
 
  err:
-    if ( bepath[0] )
-        free(xenbus_unwatch_path_token(XBT_NIL, bepath, bepath));
     if ( msg )
         printk("9pfsfront add %u failed, error %s accessing Xenstore\n",
                id, msg);
@@ -1279,22 +1278,20 @@ EXPORT_SYMBOL(init_9pfront);
 void shutdown_9pfront(void *dev)
 {
     struct dev_9pfs *dev9p = dev;
-    char bepath[64];
     XenbusState state;
     char *msg;
     char *reason = "";
 
     umount(dev9p->mnt);
-    snprintf(bepath, sizeof(bepath), "%s/state", dev9p->backend);
 
     msg = xenbus_printf(XBT_NIL, dev9p->nodename, "state", "%u",
                         XenbusStateClosing);
     if ( msg )
         goto err;
 
-    state = xenbus_read_integer(bepath);
+    state = xenbus_read_integer(dev9p->bepath);
     while ( msg == NULL && state < XenbusStateClosing)
-        msg = xenbus_wait_for_state_change(bepath, &state, &dev9p->events);
+        msg = xenbus_wait_for_state_change(dev9p->bepath, &state, 
&dev9p->events);
     if ( msg || state != XenbusStateClosing )
     {
         reason = "illegal backend state";
-- 
2.43.0




 


Rackspace

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