discover_server_notify_boot_option_add(handler->server,
opt->option);
} else {
- list_add(&handler->unresolved_boot_options, &opt->list);
- talloc_steal(handler, opt);
+ if (!opt->source->resolve_resource) {
+ pb_log("parser %s gave us an unresolved "
+ "resource (%s), but no way to "
+ "resolve it\n",
+ opt->source->name, opt->option->id);
+ talloc_free(opt);
+ } else {
+ list_add(&handler->unresolved_boot_options,
+ &opt->list);
+ talloc_steal(handler, opt);
+ }
}
}
}
return NULL;
}
+static void boot_status(void *arg, struct boot_status *status)
+{
+ struct device_handler *handler = arg;
+
+ discover_server_notify_boot_status(handler->server, status);
+}
+
void device_handler_boot(struct device_handler *handler,
struct boot_command *cmd)
{
opt = find_boot_option_by_id(handler, cmd->option_id);
- boot(handler, opt, cmd, handler->dry_run);
+ boot(handler, opt, cmd, handler->dry_run, boot_status, handler);
}