Age | Commit message (Collapse) | Author |
|
We want to avoid a deadlock when a service has ExecStartPre= programs
that wait for the job queue to run empty because of Type=idle, but which
themselves keep the queue non-empty because START_PRE was considered
ACTIVATING and hence the job not complete. With this patch we alter the
state translation table so that it is impossible ever to wait for
Type=idle unit, hence removing the deadlock.
|
|
lacks it
|
|
|
|
|
|
|
|
|
|
|
|
Previously generated units were always placed at the end of the search
path. With this change there will be three unit dirs instead of one, to
place generated entries at the beginning, in the middle and at the end
of the search path:
beginning: for units that need to override all configuration, regardless
of user or vendor. Example use: system-update-generator uses this to
temporarily redirect default.target.
middle: for units that need to override vendor configuration, but not
vendor configuration. Example use: /etc/fstab should override vendor
supplied configuration (think /tmp), but should not override native user
configuration.
end: does not override anything but is available as well. Possible usage
might be to convert D-Bus bus service files to native units but allowing
vendor supplied native units to win.
|
|
UnitPath= is also writable via native units and may be used by generators
to clarify from which file a unit is generated. This patch also hooks up
the cryptsetup and fstab generators to set UnitPath= accordingly.
|
|
deadlocks
This makes all generators log to kmsg by default.
|
|
|
|
http://freedesktop.org/wiki/Software/systemd/SystemUpdates
|
|
|
|
The idle timeout after all is for cosmetics only, hence avoid any
substantial delays just for it.
|
|
Bit by bit we should remove non-unit parsing from PID 1 and move into
generators, to clean up our code base a bit and clearly separate
parsers.
|
|
|
|
|
|
rm_rf_children() has already closed the fd with closedir().
|
|
|
|
When space is getting too low on a file system rotating the journal file
will fail after the rotation, as opening the new logfile will fail.
Recognize this when logging the error and don't try to dereference a
NULL JournalFile pointer.
|
|
This also introduces rd.systemd.unit= to specify the unit to boot into
in the initrd.
|
|
|
|
The man page and the actual code differed, and this is now corrected
|
|
Do not bypass the SERVICE_DEAD/SERVICE_FAILED state by manually issuing
a start job while an automatic restart is pending.
|
|
When service_stop() handles a service in the SERVICE_AUTO_RESTART state,
it calls service_set_state() to transition it to the SERVICE_DEAD state.
However if the service failed, it should transition it to SERVICE_FAILED
instead, which will trigger its OnFailure units. To achieve this, we now
call service_enter_dead() in place of service_set_state(), which will
transition the service to either SERVICE_DEAD or SERVICE_FAILED as is
appropriate.
Also, some misleading comments are adjusted: service_stop() is not only
called on a user request, but also during an automatic restart in order
to handle dependencies.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=45511
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=45511
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=49778
|
|
According to the man pages of posix_fallocate, it returns zero on
success or an error number on failure; however, errno is not set
on failure. If the kernel or a library other than glibc does not
support the function for example, EOPNOTSUPP will be returned and
the error will not be handled properly with original code.
|
|
this uses gnu style getopt, so you can put the opts at the end: (e.g.)
systemd-analyze blame --user
v4
|
|
|
|
|
|
Fixes weird messages like:
May 20 22:23:30 jik2 TIFIER=systemd-logind[795]: New session 46 of user gdm.
https://bugzilla.redhat.com/show_bug.cgi?id=823498
|
|
Checking the device major/minor is not a good idea. Let's replace this
with an explicit flag file, which we model after /etc/os-release and
call /etc/initrd-release.
|
|
|
|
|
|
|
|
if root_dev is set, remove subdirectories only, if the device is the
same as the root_dev. This prevents to remove files across device
boundaries.
|
|
|
|
If systemd is in the initrd/initramfs, set the initrd timestamp and do
not try to read it from the RD_TIMESTAMP environment variable.
|
|
Only recursively remove the old root, if we have been in an
initrd/initramfs.
|
|
If systemd serializes from a switch_root, it adds "--switchedroot" to
the systemd in the real root.
If "--switchedroot" is found, then we do not skip all the stuff, which
is skipped for normal rexecs.
|
|
|
|
in_initrd() checks, if the stat() for the device for "/" is 1, which it
is for the initramfs.
|
|
do_switch_root now mount moves "/dev", "/proc", "/sys", "/run" and
removes the old root recursively.
|
|
|
|
|
|
The PAM helper thread needs to capture the death signal from the
parent, but is prohibited from doing so since when the child dies
as normal user, the kernel won't allow it to send a TERM to the
PAM helper thread which is running as root.
This causes the PAM threads to never exit, accumulating after
user sessions exit.
There is however really no need to keep the PAM threads running as
root, so, we can just setresuid() to the same user as defined in the
unit file for the parent thread (User=). This makes the TERM signal
arrive as normal. In case setresuid() fails, we ignore the error, so
we at least fall back to the current behaviour.
|
|
This brings journalctl's built-in usage output in sync with the man page.
There are no commands to pass, and the help screen should not confuse
users.
|
|
|
|
reexec/switch-root
|