|
Michal Schmidt |
7a876f |
From 4befb7d4d78893625052768ddb879bde47deb9f3 Mon Sep 17 00:00:00 2001
|
|
Michal Schmidt |
7a876f |
From: Michal Schmidt <mschmidt@redhat.com>
|
|
Michal Schmidt |
7a876f |
Date: Thu, 2 Feb 2012 12:39:33 +0100
|
|
Michal Schmidt |
7a876f |
Subject: [PATCH] manager: tell correctly if the manager is booting
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
The assumption that the initial job is the job with id==1 is incorrect.
|
|
Michal Schmidt |
7a876f |
Some jobs may be enqueued before the job that starts the default unit as
|
|
Michal Schmidt |
7a876f |
in this example:
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
-.mount changed dead -> mounted
|
|
Michal Schmidt |
7a876f |
Trying to enqueue job quotacheck.service/start/fail
|
|
Michal Schmidt |
7a876f |
Installed new job quotacheck.service/start as 1
|
|
Michal Schmidt |
7a876f |
Installed new job systemd-stdout-syslog-bridge.socket/start as 2
|
|
Michal Schmidt |
7a876f |
Enqueued job quotacheck.service/start as 1
|
|
Michal Schmidt |
7a876f |
Trying to enqueue job quotaon.service/start/fail
|
|
Michal Schmidt |
7a876f |
Installed new job quotaon.service/start as 5
|
|
Michal Schmidt |
7a876f |
Enqueued job quotaon.service/start as 5
|
|
Michal Schmidt |
7a876f |
Activating default unit: default.target
|
|
Michal Schmidt |
7a876f |
Trying to enqueue job graphical.target/start/replace
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
This fixes a bug where displaying of boot status messages was turned off
|
|
Michal Schmidt |
7a876f |
too early.
|
|
Michal Schmidt |
7a876f |
(cherry picked from commit bacbccb78cec45c4759ef4291375605284248eb0)
|
|
Michal Schmidt |
7a876f |
---
|
|
Michal Schmidt |
7a876f |
src/main.c | 5 ++++-
|
|
Michal Schmidt |
7a876f |
src/manager.c | 2 +-
|
|
Michal Schmidt |
7a876f |
src/manager.h | 1 +
|
|
Michal Schmidt |
7a876f |
3 files changed, 6 insertions(+), 2 deletions(-)
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
diff --git a/src/main.c b/src/main.c
|
|
Michal Schmidt |
7a876f |
index 87e0f32..e691720 100644
|
|
Michal Schmidt |
7a876f |
--- a/src/main.c
|
|
Michal Schmidt |
7a876f |
+++ b/src/main.c
|
|
Michal Schmidt |
7a876f |
@@ -1404,6 +1404,7 @@ int main(int argc, char *argv[]) {
|
|
Michal Schmidt |
7a876f |
} else {
|
|
Michal Schmidt |
7a876f |
DBusError error;
|
|
Michal Schmidt |
7a876f |
Unit *target = NULL;
|
|
Michal Schmidt |
7a876f |
+ Job *default_unit_job;
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
dbus_error_init(&error);
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
@@ -1440,11 +1441,13 @@ int main(int argc, char *argv[]) {
|
|
Michal Schmidt |
7a876f |
manager_dump_units(m, stdout, "\t");
|
|
Michal Schmidt |
7a876f |
}
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
- if ((r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &error, NULL)) < 0) {
|
|
Michal Schmidt |
7a876f |
+ r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &error, &default_unit_job);
|
|
Michal Schmidt |
7a876f |
+ if (r < 0) {
|
|
Michal Schmidt |
7a876f |
log_error("Failed to start default target: %s", bus_error(&error, r));
|
|
Michal Schmidt |
7a876f |
dbus_error_free(&error);
|
|
Michal Schmidt |
7a876f |
goto finish;
|
|
Michal Schmidt |
7a876f |
}
|
|
Michal Schmidt |
7a876f |
+ m->default_unit_job_id = default_unit_job->id;
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
after_startup = now(CLOCK_MONOTONIC);
|
|
Michal Schmidt |
7a876f |
log_full(arg_action == ACTION_TEST ? LOG_INFO : LOG_DEBUG,
|
|
Michal Schmidt |
7a876f |
diff --git a/src/manager.c b/src/manager.c
|
|
Michal Schmidt |
7a876f |
index 98106dd..003764e 100644
|
|
Michal Schmidt |
7a876f |
--- a/src/manager.c
|
|
Michal Schmidt |
7a876f |
+++ b/src/manager.c
|
|
Michal Schmidt |
7a876f |
@@ -2926,7 +2926,7 @@ bool manager_is_booting_or_shutting_down(Manager *m) {
|
|
Michal Schmidt |
7a876f |
assert(m);
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
/* Is the initial job still around? */
|
|
Michal Schmidt |
7a876f |
- if (manager_get_job(m, 1))
|
|
Michal Schmidt |
7a876f |
+ if (manager_get_job(m, m->default_unit_job_id))
|
|
Michal Schmidt |
7a876f |
return true;
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
/* Is there a job for the shutdown target? */
|
|
Michal Schmidt |
7a876f |
diff --git a/src/manager.h b/src/manager.h
|
|
Michal Schmidt |
7a876f |
index 6e7558e..3455776 100644
|
|
Michal Schmidt |
7a876f |
--- a/src/manager.h
|
|
Michal Schmidt |
7a876f |
+++ b/src/manager.h
|
|
Michal Schmidt |
7a876f |
@@ -183,6 +183,7 @@ struct Manager {
|
|
Michal Schmidt |
7a876f |
int32_t subscribed_data_slot;
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
uint32_t current_job_id;
|
|
Michal Schmidt |
7a876f |
+ uint32_t default_unit_job_id;
|
|
Michal Schmidt |
7a876f |
|
|
Michal Schmidt |
7a876f |
/* Data specific to the Automount subsystem */
|
|
Michal Schmidt |
7a876f |
int dev_autofs_fd;
|