From: Lennart Poettering Date: Tue, 8 Mar 2011 00:43:41 +0000 (+0100) Subject: job: convert job type as early as we can, to simplify things a bit X-Git-Tag: v20~10 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81253930180bac6b6fb372a9c7bea724bd795c86;p=systemd job: convert job type as early as we can, to simplify things a bit --- diff --git a/TODO b/TODO index a2c1a361..0a2f7619 100644 --- a/TODO +++ b/TODO @@ -14,11 +14,19 @@ F15: * hook emergency.target into local-fs.target in some way as OnFailure with isolate -* libudev is borked regarding tags +* introduce simple way to do mandatory conditions (make current conditions mandatory, and introduce =| as non-mandatory conditions) + +* mount /dev/.run and /var/run as bind mounts + +* Make use of UnknownInterface, UnknownObject + +* verify SYSTEMD_IGNORE_DEPENDENCIES support in /etc/rc.d/functions Features: -* mount /dev/.run and /var/run as bind mounts +* consider services with no [Install] section and stored in /lib enabled by "systemctl is-enabled" + +* consider services with any kind of link in /etc/systemd/system enabled * introduce "x-systemd-automount" as alternative to the "comment=systemd.automount" mount option @@ -30,18 +38,12 @@ Features: document it? When doing that add switch to make this temporary by placing mask links in /dev. -* introduce simple way to do mandatory conditions (make current conditions mandatory, and introduce =| as non-mandatory conditions) - * detect LXC environment * invoke vhangup() before and after invoking getty * support "auto" and "comment=systemd.automount" at the same time for an fstab entry -* Make use of UnknownInterface, UnknownObject - -* look up crypto partition mount points via fstab to show to the user when prompting for a password - * Maybe store in unit files whether a service should be enabled by default on package installation * perhaps add "systemctl reenable" as combination of "systemctl disable" and "systemctl enable" diff --git a/src/job.c b/src/job.c index 54bd4147..206490ff 100644 --- a/src/job.c +++ b/src/job.c @@ -422,10 +422,16 @@ int job_run_and_invalidate(Job *j) { break; case JOB_RELOAD_OR_START: - if (unit_active_state(j->unit) == UNIT_ACTIVE) + if (unit_active_state(j->unit) == UNIT_ACTIVE) { + j->type = JOB_RELOAD; r = unit_reload(j->unit); - else + } else { + j->type = JOB_START; r = unit_start(j->unit); + + if (r == -EBADR) + r = 0; + } break; case JOB_RESTART: { @@ -445,8 +451,10 @@ int job_run_and_invalidate(Job *j) { else if (t == UNIT_ACTIVATING) { j->type = JOB_START; r = unit_start(j->unit); - } else + } else { + j->type = JOB_RESTART; r = unit_stop(j->unit); + } break; }