[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] mini-os: Fix frontend shutdown wait loop
mini-os: Fix frontend shutdown wait loop minios frontends must wait for backends to be shut down and reinitialized before freeing resources. Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> diff -r adce8bc43fcc extras/mini-os/blkfront.c --- a/extras/mini-os/blkfront.c Tue Apr 06 07:16:47 2010 +0100 +++ b/extras/mini-os/blkfront.c Tue Apr 06 22:35:30 2010 +0200 @@ -289,7 +289,7 @@ goto close; } state = xenbus_read_integer(path); - if (state < XenbusStateClosed) { + while (state < XenbusStateClosed) { err = xenbus_wait_for_state_change(path, &state, &dev->events); if (err) free(err); } diff -r adce8bc43fcc extras/mini-os/fbfront.c --- a/extras/mini-os/fbfront.c Tue Apr 06 07:16:47 2010 +0100 +++ b/extras/mini-os/fbfront.c Tue Apr 06 22:35:30 2010 +0200 @@ -262,7 +262,7 @@ goto close_kbdfront; } state = xenbus_read_integer(path); - if (state < XenbusStateClosed) { + while (state < XenbusStateClosed) { err = xenbus_wait_for_state_change(path, &state, &dev->events); if (err) free(err); } @@ -272,8 +272,10 @@ XenbusStateInitialising, err); goto close_kbdfront; } - // does not work yet. - //xenbus_wait_for_value(path, "2", &dev->events); + err = NULL; + state = xenbus_read_integer(path); + while (err == NULL && (state < XenbusStateInitWait || state >= XenbusStateClosed)) + err = xenbus_wait_for_state_change(path, &state, &dev->events); close_kbdfront: if (err) free(err); @@ -660,8 +662,11 @@ XenbusStateInitialising, err); goto close_fbfront; } - // does not work yet - //xenbus_wait_for_value(path, "2", &dev->events); + + err = NULL; + state = xenbus_read_integer(path); + while (err == NULL && (state < XenbusStateInitWait || state >= XenbusStateClosed)) + err = xenbus_wait_for_state_change(path, &state, &dev->events); close_fbfront: if (err) free(err); diff -r adce8bc43fcc extras/mini-os/netfront.c --- a/extras/mini-os/netfront.c Tue Apr 06 07:16:47 2010 +0100 +++ b/extras/mini-os/netfront.c Tue Apr 06 22:35:30 2010 +0200 @@ -546,7 +546,7 @@ goto close; } state = xenbus_read_integer(path); - if (state < XenbusStateClosed) { + while (state < XenbusStateClosed) { err = xenbus_wait_for_state_change(path, &state, &dev->events); if (err) free(err); } diff -r adce8bc43fcc extras/mini-os/pcifront.c --- a/extras/mini-os/pcifront.c Tue Apr 06 07:16:47 2010 +0100 +++ b/extras/mini-os/pcifront.c Tue Apr 06 22:35:30 2010 +0200 @@ -354,7 +354,7 @@ goto close_pcifront; } state = xenbus_read_integer(path); - if (state < XenbusStateClosed) { + while (state < XenbusStateClosed) { err = xenbus_wait_for_state_change(path, &state, &dev->events); free(err); } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |