[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |