also a number of minor fixups and bug fixes: spelling, oom errors
that didn't print errors, not properly forwarding error codes,
few more consistency issues, et cetera
Michal Sekletar [Fri, 20 Jul 2012 13:55:01 +0000 (15:55 +0200)]
systemd: added new dependency PartOf
This should address TODO item "new dependency type to "group" services
in a target". Semantic of new dependency is as follows. Once configured
it creates dependency which will cause that all dependent units get
stopped if unit they all depend on is stopped or restarted. Usual use
case would be configuring PartOf=some.target in template unit file
and WantedBy=some.target in [Install] section and enabling desired
number of instances. In this case starting one instance won't pull in
target but stopping or starting target(in case of WantedBy is properly
configured) will cause stop/start of all instances.
Michal Schmidt [Wed, 25 Jul 2012 06:48:50 +0000 (08:48 +0200)]
units: add the modules-load cmdline parameters to the unit conditions
For 'modules-load=' and 'rd.modules-load=' to be effective,
systemd-modules-load.service must be started. It is currently
conditional on the existence of config files. Add the presence of the
cmdline parameters to the triggering conditions.
Michal Schmidt [Tue, 24 Jul 2012 21:18:25 +0000 (23:18 +0200)]
conf-files: continue searching if one dir fails
A problem with systemd-tmpfiles has been observed where the service
failed just because one of the configuration directories could not be
read due to SELinux policy.
Michal Schmidt [Tue, 24 Jul 2012 07:47:33 +0000 (09:47 +0200)]
rules: avoid mounting raid devices too early
/dev/md0 appears as soon as the first component of the raid array is
added by incremental assembly rules. This is too early for systemd to
attempt to mount the device. The device should be considered plugged
after the raid array becomes active.
There are other reasons for not opening the pager then the --no-pager
or --follow options (described below). If the pager is not used,
messages must be ellipsized.
On Fri, Jul 20, 2012 at 05:42:44AM +0000, Shawn Landen wrote:
> "Pager to use when --no-pager is not given; overrides $PAGER.
> Setting this to an empty string or the value cat is equivalent to passing --no-pager."
Since + has higher precedence than ?:, and u+b is unlikely to be exactly zero,
the timestamp would usually be set to IDLE_THRESHOLD_USEC. Fix it by
returning either 'last activity', or 'last activity+IDLE_THRESHOLD_USEC'.
CC src/test/test_job_type-test-job-type.o
../src/test/test-job-type.c:40:25: warning: implicit conversion from enumeration type
'enum UnitType' to different enumeration type 'ServiceType' (aka 'enum ServiceType')
[-Wconversion]
.type = UNIT_SERVICE
^~~~~~~~~~~~
make-man-index.py doesn't care about .html files, only .xml files, so
the source list was wrong. Also, $(XML_FILES) are specified without
prefix, so compilation in sepearate build-dir was broken:
GEN man/index.html
Traceback (most recent call last):
File "../make-man-index.py", line 24, in <module>
t = parse(p)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1183, in parse
tree.parse(source, parser)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 647, in parse
source = open(source, "rb")
IOError: [Errno 2] No such file or directory: 'man/systemd.xml'
I don't think the usecase case in that bug makes much sense, but all the
other tools do honour /lib in the search path so we probably should do
that here, too.
Kay Sievers [Fri, 20 Jul 2012 14:01:13 +0000 (16:01 +0200)]
udev: path_id - export path for platform block devices
Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
>
> E.g. I have a platform with two sdhci controllers with different purposes.
> First slot is an external slot while second one is internal with a
> non-removable card.
>
> When there is a card in the external slot at boot, the non-removable card is
> named 'mmcblk1'; without the external card it is 'mmcblk0'. Vice versa for the
> external card.
journalctl: fix assertion failure in ellipsize_mem()
When showing the journal through "journalctl --no-pager", if the
prefix of the log message (i.e. the date and syslog identifier) is
less than 3 characters shorter than the width of the terminal, you
get:
Assertion 'new_length >= 3' failed at src/shared/util.c:3859, function ellipsize_mem(). Aborting.
because there is not enough space for the "...". This patch add the
necessary check.
core: drop KillMode parameter from KillUnit() bus call
It made no sense, and since we are documenting the bus calls now and
want to include them in our stability promise we really should get it
cleaned up sooner, not later.
use #pragma once instead of foo*foo #define guards
#pragma once has been "un-deprecated" in gcc since 3.3, and is widely supported
in other compilers.
I've been using and maintaining (rebasing) this patch for a while now, as
it annoyed me to see #ifndef fooblahfoo, etc all over the place,
almost arrogant about the annoyance of having to define all these names to
perform a commen but neccicary functionality, when a completely superior
alternative exists.
I havn't sent it till now, cause its kindof a style change, and it is bad
voodoo to mess with style that has been established by more established
editors. So feel free to lambast me as a crazy bafoon.
service: make start jobs wait, not fail, when an automatic restart is queued
When an automatic restart is already queued, then make subsequent start
jobs wait until the restart can be handled (i.e. after the holdhoff
time), instead of simply fail.
All instances of "|| rm $@" are replaced with .DELETE_ON_ERROR, which
has a similar effect. One difference is that the return code is not
masked by rm return code.
.DELETE_ON_ERROR is GNU-Make specific, but -Wno-portability is already
defined, and it's unlikely that anyone would build systemd with a
shell not supporting .DELETE_ON_ERROR. If they did, then
.DELETE_ON_ERROR would be silently ignored, i.e. in the worst case a
garbage file wouldn't be deleted, which is not very serious.
If a pager is used, ellipsization is redundant — the pager does
that better by hiding the part that cannot be shown. Pager's advantage
is that the user can press → to view the hidden part of a message,
and then ← to return.
This information can be retrieved by other means (systemctl, etc.),
but it's easier for a newbie if 'systemd --version' says something
useful. And 'systemd --help' is already there, so let's complement
that with '--version'.
journal: size journal data hash table based on maximum file size metrics
The default of 2047 hash table entries turned out to result in way too
many collisions for bigger files, hence scale the hash table size by the
estimated maximum file size.
journal: automatically rotate journal files if the data hash table is full > 75%
Previously, when the main data hash table grows too full the performance
simply started to decrease drastically. Instead, now simply rotate to a
new journal file as the hash table gets to full, so that we can start
with a new fresh empty hash table.