[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 8 of 9] xl: Factor out domain death handling into a separate function
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1280140563 -3600 # Node ID ee265e700eede4111e429a3c55d2c78f31805028 # Parent 8a13008e84ae463436fb304c50a2892324d0baaf xl: Factor out domain death handling into a separate function. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> diff -r 8a13008e84ae -r ee265e700eed tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Mon Jul 26 11:36:03 2010 +0100 +++ b/tools/libxl/xl_cmdimpl.c Mon Jul 26 11:36:03 2010 +0100 @@ -988,6 +988,18 @@ int autoconnect_console(int hvm) _exit(1); } +/* Returns 1 if domain should be restarted */ +static int handle_domain_death(struct libxl_ctx *ctx, uint32_t domid, libxl_event *event, struct libxl_dominfo *info) +{ + if (info->shutdown_reason != SHUTDOWN_suspend) { + LOG("Domain %d needs to be clean: destroying the domain", domid); + libxl_domain_destroy(ctx, domid, 0); + if (info->shutdown_reason == SHUTDOWN_reboot) + return 1; + } + return 0; +} + struct domain_create { int debug; int daemonize; @@ -1363,25 +1375,20 @@ start: LOG("Domain %d is dead", domid); if (ret) { - if (info.shutdown_reason != SHUTDOWN_suspend) { - LOG("Domain %d needs to be clean: destroying the domain", domid); - libxl_domain_destroy(&ctx, domid, 0); - if (info.shutdown_reason == SHUTDOWN_reboot) { - libxl_free_waiter(w1); - libxl_free_waiter(w2); - free(w1); - free(w2); - LOG("Done. Rebooting now"); - /* - * XXX FIXME: If this sleep is not there then - * domain re-creation fails sometimes. - */ - sleep(2); - goto start; - } - LOG("Done. Exiting now"); + if (handle_domain_death(&ctx, domid, &event, &info)) { + libxl_free_waiter(w1); + libxl_free_waiter(w2); + free(w1); + free(w2); + /* + * XXX FIXME: If this sleep is not there then domain + * re-creation fails sometimes. + */ + LOG("Done. Rebooting now"); + sleep(2); + goto start; } - LOG("Domain %d does not need to be clean, exiting now", domid); + LOG("Done. Exiting now"); exit(0); } break; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |