X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=discover%2Fdevice-handler.c;h=5b7afd0d3f56d7be992d3725f757d80d2c2c412a;hb=8107b37ad034f7fd201ed49dfcc7a8284e71de0a;hp=48bfa0e237cfd410415d83a265fbbc0bed5a2284;hpb=75c97cfd449b2bac8e61af1017a83bdf43f5e8fe;p=petitboot diff --git a/discover/device-handler.c b/discover/device-handler.c index 48bfa0e..5b7afd0 100644 --- a/discover/device-handler.c +++ b/discover/device-handler.c @@ -321,7 +321,7 @@ struct device_handler *device_handler_init(struct discover_server *server, handler->server = server; handler->waitset = waitset; handler->dry_run = dry_run; - handler->autoboot_enabled = config_get()->autoboot_enabled; + handler->autoboot_enabled = config_autoboot_active(config_get()); list_init(&handler->unresolved_boot_options); @@ -351,6 +351,15 @@ void device_handler_reinit(struct device_handler *handler) unsigned int i; device_handler_cancel_default(handler); + /* Cancel any pending non-default boot */ + if (handler->pending_boot) { + boot_cancel(handler->pending_boot); + handler->pending_boot = NULL; + handler->pending_boot_is_default = false; + } + + /* Cancel any remaining async jobs */ + process_stop_async_all(); /* free unresolved boot options */ list_for_each_entry_safe(&handler->unresolved_boot_options, @@ -1039,8 +1048,6 @@ int device_handler_discover(struct device_handler *handler, _("Processing new %s device"), device_type_display_name(dev->device->type)); - process_boot_option_queue(handler); - /* create our context */ ctx = device_handler_discover_context_create(handler, dev); @@ -1058,6 +1065,7 @@ int device_handler_discover(struct device_handler *handler, /* add discovered stuff to the handler */ device_handler_discover_context_commit(handler, ctx); + process_boot_option_queue(handler); out: talloc_unlink(handler, ctx);