50f48ad37aad99c54de4db34b07c3825cdedcf41 |
|
10-Feb-2016 |
Daniel Mack <daniel@zonque.org> |
cgroup: remove support for NetClass= directive
Support for net_cls.class_id through the NetClass= configuration directive
has been added in v227 in preparation for a per-unit packet filter mechanism.
However, it turns out the kernel people have decided to deprecate the net_cls
and net_prio controllers in v2. Tejun provides a comprehensive justification
for this in his commit, which has landed during the merge window for kernel
v4.5:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd1060a1d671
As we're aiming for full support for the v2 cgroup hierarchy, we can no
longer support this feature. Userspace tool such as nftables are moving over
to setting rules that are specific to the full cgroup path of a task, which
obsoletes these controllers anyway.
This commit removes support for tweaking details in the net_cls controller,
but keeps the NetClass= directive around for legacy compatibility reasons. |
b26fa1a2fbcfee7d03b0c8fd15ec3aa64ae70b9f |
|
10-Feb-2016 |
Daniel Mack <daniel@zonque.org> |
tree-wide: remove Emacs lines from all files
This should be handled fine now by .dir-locals.el, so need to carry that
stuff in every file. |
6bf0f408e4833152197fb38fb10a9989c89f3a59 |
|
10-Feb-2016 |
Lennart Poettering <lennart@poettering.net> |
core: make the StartLimitXYZ= settings generic and apply to any kind of unit, not just services
This moves the StartLimitBurst=, StartLimitInterval=, StartLimitAction=, RebootArgument= from the [Service] section
into the [Unit] section of unit files, and thus support it in all unit types, not just in services.
This way we can enforce the start limit much earlier, in particular before testing the unit conditions, so that
repeated start-up failure due to failed conditions is also considered for the start limit logic.
For compatibility the four options may also be configured in the [Service] section still, but we only document them in
their new section [Unit].
This also renamed the socket unit failure code "service-failed-permanent" into "service-start-limit-hit" to express
more clearly what it is about, after all it's only triggered through the start limit being hit.
Finally, the code in busname_trigger_notify() and socket_trigger_notify() is altered to become more alike.
Fixes: #2467 |
1f133e0d538305edfce55198abadaa9a32ab23ab |
|
07-Feb-2016 |
Torstein Husebø <torstein@huseboe.net> |
treewide: fix typos and spacing |
36c16a7cdd6c33d7980efc2cd6a2211941f302b4 |
|
01-Feb-2016 |
Lennart Poettering <lennart@poettering.net> |
core: rework unit timeout handling, and add new setting RuntimeMaxSec=
This clean-ups timeout handling in PID 1. Specifically, instead of storing 0 in internal timeout variables as
indication for a disabled timeout, use USEC_INFINITY which is in-line with how we do this in the rest of our code
(following the logic that 0 means "no", and USEC_INFINITY means "never").
This also replace all usec_t additions with invocations to usec_add(), so that USEC_INFINITY is properly propagated,
and sd-event considers it has indication for turning off the event source.
This also alters the deserialization of the units to restart timeouts from the time they were originally started from.
Before this patch timeouts would be restarted beginning with the time of the deserialization, which could lead to
artificially prolonged timeouts if a daemon reload took place.
Finally, a new RuntimeMaxSec= setting is introduced for service units, that specifies a maximum runtime after which a
specific service is forcibly terminated. This is useful to put time limits on time-intensive processing jobs.
This also simplifies the various xyz_spawn() calls of the various types in that explicit distruction of the timers is
removed, as that is done anyway by the state change handlers, and a state change is always done when the xyz_spawn()
calls fail.
Fixes: #2249 |
a483fb59a8dd908a3e4b20d62410d022d511eaa8 |
|
01-Feb-2016 |
Lennart Poettering <lennart@poettering.net> |
core: store for each unit when the last low-level unit state change took place
This adds a new timestamp field to the Unit struct, storing when the last low-level state change took place, and make
sure this is restored after a daemon reload. This new field is useful to allow restarting of per-state timers exactly
where they originally started. |
3282591dc30b2934a895c7403d2f0b0690260947 |
|
28-Jan-2016 |
Lennart Poettering <lennart@poettering.net> |
core: make sure "systemctl reload-or-try-restart is actually a noop if a unit is not running
This makes sure we follow the same basic logic for try-restart if we have a try-reload.
Fixes #688 |
d054f0a4d451120c26494263fc4dc175bfd405b1 |
|
12-Jan-2016 |
Daniel Mack <daniel@zonque.org> |
tree-wide: use xsprintf() where applicable
Also add a coccinelle receipt to help with such transitions. |
a103496ca585e22bb5e386e3238b468d133f5659 |
|
11-Jan-2016 |
Ismo Puustinen <ismo.puustinen@intel.com> |
capabilities: keep bounding set in non-inverted format.
Change the capability bounding set parser and logic so that the bounding
set is kept as a positive set internally. This means that the set
reflects those capabilities that we want to keep instead of drop. |
201f0c916d8f65ad2595a651b1371fcd39a4cf55 |
|
10-Jan-2016 |
Daniel Mack <daniel@zonque.org> |
tree-wide: unify argument lists of IN_SET()
The new implementation will not allow passing the same values more than
once, so clean up first. |
4afd3348c7506dd1d36305b7bcb9feb8952b9d6b |
|
27-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
tree-wide: expose "p"-suffix unref calls in public APIs to make gcc cleanup easy
GLIB has recently started to officially support the gcc cleanup
attribute in its public API, hence let's do the same for our APIs.
With this patch we'll define an xyz_unrefp() call for each public
xyz_unref() call, to make it easy to use inside a
__attribute__((cleanup())) expression. Then, all code is ported over to
make use of this.
The new calls are also documented in the man pages, with examples how to
use them (well, I only added docs where the _unref() call itself already
had docs, and the examples, only cover sd_bus_unrefp() and
sd_event_unrefp()).
This also renames sd_lldp_free() to sd_lldp_unref(), since that's how we
tend to call our destructors these days.
Note that this defines no public macro that wraps gcc's attribute and
makes it easier to use. While I think it's our duty in the library to
make our stuff easy to use, I figure it's not our duty to make gcc's own
features easy to use on its own. Most likely, client code which wants to
make use of this should define its own:
#define _cleanup_(function) __attribute__((cleanup(function)))
Or similar, to make the gcc feature easier to use.
Making this logic public has the benefit that we can remove three header
files whose only purpose was to define these functions internally.
See #2008. |
9d06297e262966de71095debd1537fc223f940a3 |
|
24-Nov-2015 |
Harald Hoyer <harald@redhat.com> |
core: Do not bind a mount unit to a device, if it was from mountinfo
If a mount unit is bound to a device, systemd tries to umount the
mount point, if it thinks the device has gone away.
Due to the uevent queue and inotify of /proc/self/mountinfo being two
different sources, systemd can never get the ordering reliably correct.
It can happen, that in the uevent queue ADD,REMOVE,ADD is queued
and an inotify of mountinfo (or libmount event) happend with the
device in question.
systemd cannot know, at which point of time the mount happend in the
ADD,REMOVE,ADD sequence.
The real ordering might have been ADD,REMOVE,ADD,mount
and systemd might think ADD,mount,REMOVE,ADD and would umount the
mountpoint.
A test script which triggered this behaviour is:
rm -f test-efi-disk.img
dd if=/dev/null of=test-efi-disk.img bs=1M seek=512 count=1
parted --script test-efi-disk.img \
"mklabel gpt" \
"mkpart ESP fat32 1MiB 511MiB" \
"set 1 boot on"
LOOP=$(losetup --show -f -P test-efi-disk.img)
udevadm settle
mkfs.vfat -F32 ${LOOP}p1
mkdir -p mnt
mount ${LOOP}p1 mnt
... <dostuffwith mnt>
Without the "udevadm settle" systemd unmounted mnt while the script was
operating on mnt.
Of course the question is, why there was a REMOVE in the first place,
but this is not part of this patch. |
df446f96031e281ed676052ccdede0c774cb1e0c |
|
17-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: Minor cleaning up of unit/log status and log logic
We only reorder a few things and modernize some constructs. No
functional changes.
- Move some if checks from the caller to the callee of a few functions.
- Use IN_SE() where we can
- Move status printing functions together |
7c65093ae351d82a04a3e03582e8faedee798adc |
|
17-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: make unit_make_transient() more thorough
Let's reset more stuff that does not apply to transient units. Also,
let's readd the unito to all queues, because it's identity now changed. |
0f13f3bd7918b84955eaa0ceeea0f964877a93f7 |
|
17-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: move check whether a unit is suitable to become transient into unit.c
Lets introduce unit_is_pristine() that verifies whether a unit is
suitable to become a transient unit, by checking that it is no
referenced yet and has no data on disk assigned. |
702d4e6f14b0c92f7325fcdc3650c79c2221849e |
|
13-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: now that .snapshot unit are gone, we don't need the per-type .no_gc bool anymore |
0af20ea2ee2af2bcf2258e7a8e1a13181a6a75d6 |
|
13-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: add new DefaultTasksMax= setting for system.conf
This allows initializing the TasksMax= setting of all units by default
to some fixed value, instead of leaving it at infinity as before. |
4bd29fe5cec9d744a4e39240c76b85d999bd2cf7 |
|
12-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: drop "override" flag when building transactions
Now that we don't have RequiresOverridable= and RequisiteOverridable=
dependencies anymore, we can get rid of tracking the "override" boolean
for jobs in the job engine, as it serves no purpose anymore.
While we are at it, fix some error messages we print when invoking
functions that take the override parameter. |
f32b43bda454a70ae23d6802605d41b26dc24ce2 |
|
12-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: remove support for RequiresOverridable= and RequisiteOverridable=
As discussed at systemd.conf 2015 and on also raised on the ML:
http://lists.freedesktop.org/archives/systemd-devel/2015-November/034880.html
This removes the two XyzOverridable= unit dependencies, that were
basically never used, and do not enhance user experience in any way.
Most folks looking for the functionality this provides probably opt for
the "ignore-dependencies" job mode, and that's probably a good idea.
Hence, let's simplify systemd's dependency engine and remove these two
dependency types (and their inverses).
The unit file parser and the dbus property parser will now redirect
the settings/properties to result in an equivalent non-overridable
dependency. In the case of the unit file parser we generate a warning,
to inform the user.
The dbus properties for this unit type stay available on the unit
objects, but they are now hidden from usual introspection and will
always return the empty list when queried.
This should provide enough compatibility for the few unit files that
actually ever made use of this. |
0ec0deaa30d0e68430f03fa6f32affa576481d18 |
|
12-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
install: follow unit file symlinks in /usr, but not /etc when looking for [Install] data
Some distributions use alias unit files via symlinks in /usr to cover
for legacy service names. With this change we'll allow "systemctl
enable" on such aliases.
Previously, our rule was that symlinks are user configuration that
"systemctl enable" + "systemctl disable" creates and removes, while unit
files is where the instructions to do so are store. As a result of the
rule we'd never read install information through symlinks, since that
would mix enablement state with installation instructions.
Now, the new rule is that only symlinks inside of /etc are
configuration. Unit files, and symlinks in /usr are now valid for
installation instructions.
This patch is quite a rework of the whole install logic, and makes the
following addional changes:
- Adds a complete test "test-instal-root" that tests the install logic
pretty comprehensively.
- Never uses canonicalize_file_name(), because that's incompatible with
operation relative to a specific root directory.
- unit_file_get_state() is reworked to return a proper error, and
returns the state in a call-by-ref parameter. This cleans up confusion
between the enum type and errno-like errors.
- The new logic puts a limit on how long to follow unit file symlinks:
it will do so only for 64 steps at max.
- The InstallContext object's fields are renamed to will_process and
has_processed (will_install and has_installed) since they are also
used for deinstallation and all kinds of other operations.
- The root directory is always verified before use.
- install.c is reordered to place the exported functions together.
- Stricter rules are followed when traversing symlinks: the unit suffix
must say identical, and it's not allowed to link between regular units
and templated units.
- Various modernizations
- The "invalid" unit file state has been renamed to "bad", in order to
avoid confusion between UNIT_FILE_INVALID and
_UNIT_FILE_STATE_INVALID. Given that the state should normally not be
seen and is not documented this should not be a problematic change.
The new name is now documented however.
Fixes #1375, #1718, #1706 |
36b4a7ba555540edb7648e0f97019280b4ac38de |
|
11-Nov-2015 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Remove snapshot unit type
Snapshots were never useful or used for anything. Many systemd
developers that I spoke to at systemd.conf2015, didn't even know they
existed, so it is fairly safe to assume that this type can be deleted
without harm.
The fundamental problem with snapshots is that the state of the system
is dynamic, devices come and go, users log in and out, timers fire...
and restoring all units to some state from the past would "undo"
those changes, which isn't really possible.
Tested by creating a snapshot, running the new binary, and checking
that the transition did not cause errors, and the snapshot is gone,
and snapshots cannot be created anymore.
New systemctl says:
Unknown operation snapshot.
Old systemctl says:
Failed to create snapshot: Support for snapshots has been removed.
IgnoreOnSnaphost settings are warned about and ignored:
Support for option IgnoreOnSnapshot= has been removed and it is ignored
http://lists.freedesktop.org/archives/systemd-devel/2015-November/034872.html |
5a6158b6412100672e1cbddb22efdcc5101fed7f |
|
10-Nov-2015 |
Lennart Poettering <lennart@poettering.net> |
core: try to continue if coldplugging of a unit fails |
8ea823b60d0afe71c9237738d2164460da0b76e6 |
|
02-Nov-2015 |
Daniel Mack <daniel@zonque.org> |
core: be more verbose when NameOwnerChanged subscriptions fail |
cbe46ead79267ca0a2807782f714bf9f60ff489f |
|
31-Oct-2015 |
Evgeny Vereshchagin <evvers@ya.ru> |
core: set_unit_path overwrites SYSTEMD_UNIT_PATH |
b5efdb8af40ea759a1ea584c1bc44ecc81dd00ce |
|
27-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util-lib: split out allocation calls into alloc-util.[ch] |
8fcde01280adcbd07e8205b91ac52b06305b6208 |
|
27-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util-lib: split stat()/statfs()/stavfs() related calls into stat-util.[ch] |
5f311f8c0e51e2f13773823feb6a71f7c6f2838c |
|
27-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util: remove path_get_parent(), in favour of dirname_malloc()
We don't need two functions that do essentialy the same, hence drop
path_get_parent(), and stick to dirname_malloc(), but move it to
path-util.[ch]. |
6bedfcbb2970e06a4d3280c8fb62083d252ede73 |
|
27-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util-lib: split string parsing related calls from util.[ch] into parse-util.[ch] |
b1d4f8e154bf61b5de1b27461ef8e9c8c5e838a1 |
|
26-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util-lib: split out user/group/uid/gid calls into user-util.[ch] |
07630cea1f3a845c09309f197ac7c4f11edd3b62 |
|
24-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util-lib: split our string related calls from util.[ch] into its own file string-util.[ch]
There are more than enough calls doing string manipulations to deserve
its own files, hence do something about it.
This patch also sorts the #include blocks of all files that needed to be
updated, according to the sorting suggestions from CODING_STYLE. Since
pretty much every file needs our string manipulation functions this
effectively means that most files have sorted #include blocks now.
Also touches a few unrelated include files. |
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3 |
|
24-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
util: split out escaping code into escape.[ch]
This really deserves its own file, given how much code this is now. |
b250ea2fd6fe35242a7d161a3b37bb756ae87be0 |
|
19-Oct-2015 |
Thomas Hindoe Paaboel Andersen <phomes@gmail.com> |
tree-wide: remove unused functions |
9806e87da22d0025d7c427907202e5751a6b5989 |
|
17-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: allocate bus name match string on the stack
Let's use strjoina() rather than strjoin() for construct dbus match
strings.
Also, while we are at it, fix parameter ordering, so that our functions
always put the object first, like it is customary for OO-like
programming. |
c7c89abb9edf9320246482bf4a8e0656199281ae |
|
08-Oct-2015 |
Franck Bui <fbui@suse.com> |
Make sure the mount units pulled by 'RequiresMountsFor=' are loaded (if they exist)
We should make sure that mount units involved by 'RequiresMountsFor='
directives are really loaded if not required by any others units so
that Requires= dependencies on the mount units are applied and thus
the mount unit dependencies are started. |
a34ceba66fc0e856d8f76f340389a4768b57a365 |
|
08-Oct-2015 |
Lennart Poettering <lennart@poettering.net> |
core: add support for setting stdin/stdout/stderr for transient services
When starting a transient service, allow setting stdin/stdout/stderr fds
for it, by passing them in via the bus.
This also simplifies some of the serialization code for units. |
8c8da0e0cb498245c765732cf9caa081a70c560f |
|
29-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: add a "Requires=" dependency between units and the slices they are located in
We place the processes we fork off in the cgroup anyway, and we probably
shouldn't be able to get that far if we couldn't set up the slice due to
resource problems or unmet conditions. Hence upgrade the dependency
between units and the slices they are located in from Wants= to
Requires=. |
978c8b6347d61f5a792886ef1875a4df625fd65f |
|
28-Sep-2015 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Move UnitActiveState to basic/
Preparation to allow systemctl to query the list of unit states. |
ac5e3a505e49c80b56c971a8fc13bacac961640d |
|
21-Sep-2015 |
Jan Synacek <jsynacek@redhat.com> |
core: extend KillUnit() to return error when no unit was killed |
32ee7d3309816994a02b3ff000e9734120d71214 |
|
16-Sep-2015 |
Daniel Mack <daniel@zonque.org> |
cgroup: add support for net_cls controllers
Add a new config directive called NetClass= to CGroup enabled units.
Allowed values are positive numbers for fix assignments and "auto" for
picking a free value automatically, for which we need to keep track of
dynamically assigned net class IDs of units. Introduce a hash table for
this, and also record the last ID that was given out, so the allocator
can start its search for the next 'hole' from there. This could
eventually be optimized with something like an irb.
The class IDs up to 65536 are considered reserved and won't be
assigned automatically by systemd. This barrier can be made a config
directive in the future.
Values set in unit files are stored in the CGroupContext of the
unit and considered read-only. The actually assigned number (which
may have been chosen dynamically) is stored in the unit itself and
is guaranteed to remain stable as long as the unit is active.
In the CGroup controller, set the configured CGroup net class to
net_cls.classid. Multiple unit may share the same net class ID,
and those which do are linked together. |
5269eb6b32f662d21638e54bb13171a5b97fe58f |
|
11-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: allocate sets of startup and failed units on-demand
There's a good chance we never needs these sets, hence allocate them
only when needed. |
d53d94743c5e5e3a4a668b0c707826a90a08949a |
|
11-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: refactor cpu shares/blockio weight cgroup logic
Let's stop using the "unsigned long" type for weights/shares, and let's
just use uint64_t for this, as that's what we expose on the bus.
Unify parsers, and always validate the range for these fields.
Correct the default blockio weight to 500, since that's what the kernel
actually uses.
When parsing the weight/shares settings from unit files accept the empty
string as a way to reset the weight/shares value. When getting it via
the bus, uniformly map (uint64_t) -1 to unset.
Open up StartupCPUShares= and StartupBlockIOWeight= to transient units. |
03a7b521e3ffb7f5d153d90480ba5d4bc29d1e8f |
|
10-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: add support for the "pids" cgroup controller
This adds support for the new "pids" cgroup controller of 4.3 kernels.
It allows accounting the number of tasks in a cgroup and enforcing
limits on it.
This adds two new setting TasksAccounting= and TasksMax= to each unit,
as well as a gloabl option DefaultTasksAccounting=.
This also updated "cgtop" to optionally make use of the new
kernel-provided accounting.
systemctl has been updated to show the number of tasks for each service
if it is available.
This patch also adds correct support for undoing memory limits for units
using a MemoryLimit=infinity syntax. We do the same for TasksMax= now
and hence keep things in sync here. |
525d3cc746a037e8cc6b2e0ebaaf76a51856fa6b |
|
09-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
tree-wide: take benefit of the fact that hashmap_free() returns NULL
And set_free() too.
Another Coccinelle patch. |
6796073e330f49923c5134652ee085e29fc88002 |
|
09-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
tree-wide: make use of the fact that strv_free() returns NULL
Another Coccinelle patch. |
d11a76451f21dbec5dcc0d65444b76124764d3b5 |
|
07-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: move "not supported" check after condition check in unit_start()
Make sure we always check conditions before checking whether the unit
type is supported in unit_start(), since condition checks are "clean
errors", while "not supported" errors are fatal.
This cleans up the boot output of systemd in containers, where a lot of
NOTSUPP lines were shown befor this fix.
This partially reverts 8ff4d2ab0d4758e914aea6d86154d85f2b2c787f which
reorder the checks. |
75f86906c52735c98dc0aa7e24b773edb42ee814 |
|
07-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
basic: rework virtualization detection API
Introduce a proper enum, and don't pass around string ids anymore. This
simplifies things quite a bit, and makes virtualization detection more
similar to architecture detection. |
8ff4d2ab0d4758e914aea6d86154d85f2b2c787f |
|
05-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: make unit_can_start() more accurate
This funciton is exposed via CanStart on the bus, and should be as
accurate as possible. Hence: make sure to return false for units of unit
types not supported on the system, and for unit types where
configuration failed to load.
Also see #1105. |
fea72cc0336f4d90875cdddc1aa9739dcbb174f5 |
|
04-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
macro: introduce new PID_TO_PTR macros and make use of them
This adds a new PID_TO_PTR() macro, plus PTR_TO_PID() and makes use of
it wherever we maintain processes in a hash table. Previously we
sometimes used LONG_TO_PTR() and other times ULONG_TO_PTR() for that,
hence let's make this more explicit and clean up things. |
efdb02375beb0a940c3320865572913780b4d7de |
|
01-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: unified cgroup hierarchy support
This patch set adds full support the new unified cgroup hierarchy logic
of modern kernels.
A new kernel command line option "systemd.unified_cgroup_hierarchy=1" is
added. If specified the unified hierarchy is mounted to /sys/fs/cgroup
instead of a tmpfs. No further hierarchies are mounted. The kernel
command line option defaults to off. We can turn it on by default as
soon as the kernel's APIs regarding this are stabilized (but even then
downstream distros might want to turn this off, as this will break any
tools that access cgroupfs directly).
It is possibly to choose for each boot individually whether the unified
or the legacy hierarchy is used. nspawn will by default provide the
legacy hierarchy to containers if the host is using it, and the unified
otherwise. However it is possible to run containers with the unified
hierarchy on a legacy host and vice versa, by setting the
$UNIFIED_CGROUP_HIERARCHY environment variable for nspawn to 1 or 0,
respectively.
The unified hierarchy provides reliable cgroup empty notifications for
the first time, via inotify. To make use of this we maintain one
manager-wide inotify fd, and each cgroup to it.
This patch also removes cg_delete() which is unused now.
On kernel 4.2 only the "memory" controller is compatible with the
unified hierarchy, hence that's the only controller systemd exposes when
booted in unified heirarchy mode.
This introduces a new enum for enumerating supported controllers, plus a
related enum for the mask bits mapping to it. The core is changed to
make use of this everywhere.
This moves PID 1 into a new "init.scope" implicit scope unit in the root
slice. This is necessary since on the unified hierarchy cgroups may
either contain subgroups or processes but not both. PID 1 hence has to
move out of the root cgroup (strictly speaking the root cgroup is the
only one where processes and subgroups are still allowed, but in order
to support containers nicey, we move PID 1 into the new scope in all
cases.) This new unit is also used on legacy hierarchy setups. It's
actually pretty useful on all systems, as it can then be used to filter
journal messages coming from PID 1, and so on.
The root slice ("-.slice") is now implicitly created and started (and
does not require a unit file on disk anymore), since
that's where "init.scope" is located and the slice needs to be started
before the scope can.
To check whether we are in unified or legacy hierarchy mode we use
statfs() on /sys/fs/cgroup. If the .f_type field reports tmpfs we are in
legacy mode, if it reports cgroupfs we are in unified mode.
This patch set carefuly makes sure that cgls and cgtop continue to work
as desired.
When invoking nspawn as a service it will implicitly create two
subcgroups in the cgroup it is using, one to move the nspawn process
into, the other to move the actual container processes into. This is
done because of the requirement that cgroups may either contain
processes or other subgroups. |
d06673212e7672da44d5147d1d393278d9b1b478 |
|
01-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: rework when we kill with which signal
When the user wants to explicitly send our own PID a signal, then do so.
Don't follow up SIGABRT with a SIGHUP if send_sighup is enabled. At that
point the process should have segfaulted, hence there's no point in
following up with a SIGHUP.
Send only termination signals to ourselves, never KILL or ABRT signals. |
102ef9829ed72d3991cb73bc893880d715e667c5 |
|
01-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
core: don't allow changing the slice of a unit while it is active |
b821a397c0fd382266a6018c1b6738ced69f8041 |
|
01-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: small clean-ups
Always say when we ignore errors. Cast calls whose return value we
knowingly ingore to (void). Use "bool" where we actually mean a boolean,
even if we return it as an int later on. |
e9db43d5910717a1084924c512bf85e2b8265375 |
|
01-Sep-2015 |
Lennart Poettering <lennart@poettering.net> |
units: enable waiting for unit termination in certain cases
The legacy cgroup hierarchy does not support reliable empty
notifications in containers and if there are left-over subgroups in a
cgroup. This makes it hard to correctly wait for them running empty, and
thus we previously disabled this logic entirely.
With this change we explicitly check for the container case, and whether
the unit is a "delegation" unit (i.e. one where programs may create
their own subgroups). If we are neither in a container, nor operating on
a delegation unit cgroup empty notifications become reliable and thus we
start waiting for the empty notifications again.
This doesn't really fix the general problem around cgroup notifications
but reduces the effect around it.
(This also reorders #include lines by their focus, as suggsted in
CODING_STYLE. We have to add "virt.h", so let's do that at the right
place.)
Also see #317. |
52f448c3fff64752649af4b8be5260c1a8a105ea |
|
31-Aug-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: minor simplification |
d79200e26ee39d4b451f95e876fc4595df51fe51 |
|
31-Aug-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: unify how we assing slices to units
This adds a new call unit_set_slice(), and simplifies
unit_add_default_slice(). THis should make our code a bit more robust
and simpler. |
35b7ff80e29524cb01f881ca6d52c669970c88f1 |
|
31-Aug-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: add new macros to test for unit contexts |
3f5e811594bcdb25d3aa859cb0be06f6df3a03b9 |
|
31-Aug-2015 |
Lennart Poettering <lennart@poettering.net> |
core: don't generate stub unit file for transient units
We store the properties for transient units in drop-ins anyway, and
units don't have to have fragment files, hence don't bother with them,
and don't create them. |
cf9fd50884bcd2fd3a54e0e0c0c83a7b3326ca9b |
|
06-Aug-2015 |
Daniel Mack <daniel@zonque.org> |
core: unit: remove bus slot after calling unit_done()
The ->done callback in the unit's vtable might call into
unit_unwatch_bus_name() and corrupt memory by that.
Move the call down, and clean up the bus slot in case it hasn't been done
yet. |
bbc2908635ca3ded9162504683fa126809f0ec14 |
|
06-Aug-2015 |
Daniel Mack <daniel@zonque.org> |
core: dbus: track bus names per unit
Currently, PID1 installs an unfiltered NameOwnerChanged signal match, and
dispatches the signals itself. This does not scale, as right now, PID1
wakes up every time a bus client connects.
To fix this, install individual matches once they are requested by
unit_watch_bus_name(), and remove the watches again through their slot in
unit_unwatch_bus_name().
If the bus is not available during unit_watch_bus_name(), just store
name in the 'watch_bus' hashmap, and let bus_setup_api() do the installing
later. |
b5bf308ba50ab0bac0f0caec2d8e4d5c75c107d0 |
|
21-Jul-2015 |
Michal Schmidt <mschmidt@redhat.com> |
core: unit_get_status_message_format() never returns NULL
unit_get_status_message_format() is used only with one of JOB_START,
JOB_STOP, JOB_RELOAD, all of which have fallback message strings
defined, so the function may never return NULL. |
a85ca902c9f7f5aa8f2f3e3299147733802cf09d |
|
21-Jul-2015 |
Michal Schmidt <mschmidt@redhat.com> |
core: always try harder to get unit status message format string
The starting/stopping messages are printed to the console only if the
corresponding format string is defined in the unit's vtable. To avoid
excessive messages on the console, the unit types whose start/stop
jobs are instantaneous had the format strings intentionally undefined.
When logging the same event to the journal, a fallback to generic
Starting/Stopping/Reloading messages is used.
The problem of excessive console messages with instantaneous jobs
is already resolved in a nicer way ("core: fix confusing logging of
instantaneous jobs"), so there's no longer a need to have two ways of
getting the format strings. Let's fold them into one function with
the fallback to generic message strings. |
d1a34ae9c20f1c02aab17884919eccef572b1d21 |
|
21-Jul-2015 |
Michal Schmidt <mschmidt@redhat.com> |
core: fix confusing logging of instantaneous jobs
For instantaneous jobs (e.g. starting of targets, sockets, slices, or
Type=simple services) the log shows the job completion
before starting:
systemd[1]: Created slice -.slice.
systemd[1]: Starting -.slice.
systemd[1]: Created slice System Slice.
systemd[1]: Starting System Slice.
systemd[1]: Listening on Journal Audit Socket.
systemd[1]: Starting Journal Audit Socket.
systemd[1]: Reached target Timers.
systemd[1]: Starting Timers.
...
The reason is that the job completes before the ->start() method returns
and only then does unit_start() print the "Starting ..." message.
The same thing happens when stopping units.
Rather than fixing the order of the messages, let's just not emit the
Starting/Stopping message at all when the job completes instantaneously.
The job completion message is sufficient in this case. |
084918ba41acbb80076c64e7338cf73101b1385e |
|
23-Jun-2015 |
Abdo Roig-Maranges <abdo.roig@gmail.com> |
core: fix reversed dependency check in unit_check_unneeded
This was introduced by commit be7d9ff730cb88d7c6a8 and breaks
StopWhenUnneeded=true in the presence of a Requisite dependency. |
de1d4f9b5c6345f63edd46f643485eca909995bf |
|
11-Jun-2015 |
Werner Fink <werner@suse.de> |
core: Let two more booleans survive a daemon-reload
Without the boolean bus_name_good services as well as cgroup_realized
for units a unit of Type=dbus and ExecReload sending SIGHUP to $MAINPID
will be terminated if systemd will be daemon reloaded.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746151
https://bugs.freedesktop.org/show_bug.cgi?id=78311
https://bugzilla.opensuse.org/show_bug.cgi?id=934077 |
ed10fa8ce2e9cc4b78adb257a1b8fdc636bacea9 |
|
19-May-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: drop support for pre-v44 job serialization
No distro ships that old systemd versions anyway, hence let's drop
support for live-upgrades for them. Offline updates are still supported.
And live-upgrades will only lose the job queue, hence basically still
work... |
67bfdc9771ce9d67b6ecff9982d2ecb89bdb2f6b |
|
19-May-2015 |
Lennart Poettering <lennart@poettering.net> |
core: also enforce ratelimiter if we stop a unit due to BindsTo=
This extends on bea355dac94e82697aa98e25d80ee4248263bf92, and extends
the ratelimiter to not only be used for StopWhenUnneeded=1 units but
also for units that have BindsTo= on a unit that is dead.
http://lists.freedesktop.org/archives/systemd-devel/2015-April/030224.html |
bea355dac94e82697aa98e25d80ee4248263bf92 |
|
19-May-2015 |
Lennart Poettering <lennart@poettering.net> |
core: enforce a ratelimiter when stopping units due to StopWhenUnneeded=1
Otherwise we might end up in an endless stop loop.
http://lists.freedesktop.org/archives/systemd-devel/2015-April/030224.html |
f3b85044c845de03de05135c1dd5f3298bf3e5a2 |
|
19-May-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: fix unit_check_unneeded() dependency iteration
Fixes a regression introduced in be7d9ff730cb88d7c6a869dd5c47754c78ceaef2. |
be7d9ff730cb88d7c6a869dd5c47754c78ceaef2 |
|
19-May-2015 |
Lennart Poettering <lennart@poettering.net> |
core: introduce seperate reverse dependencies for Requires= and Requisite=
This allows us to ensure that Requisite= dependencies never cause
propagation between units, while Requires= dependencies might.
http://lists.freedesktop.org/archives/systemd-devel/2015-May/031742.html |
b2c23da8cea1987a1a329f5a964d3299b7ca7890 |
|
11-May-2015 |
Lennart Poettering <lennart@poettering.net> |
core: rename SystemdRunningAs to ManagerRunningAs
It's primarily just a property of the Manager object after all, and we
try to refer to PID 1 as "manager" instead of "systemd", hence let's to
stick to this here too. |
8b4305c7354f572fa0390b7580ba30af741aa0a5 |
|
11-May-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: move unit_warn_if_dir_nonempty() and friend to unit.c
The call is only used by the mount and automount unit types, but that's
already enough to consider it generic unit functionality, hence move it
out of mount.c and into unit.c. |
f2341e0a87cab1558c84c933956e9181d5fb6c52 |
|
11-May-2015 |
Lennart Poettering <lennart@poettering.net> |
core,network: major per-object logging rework
This changes log_unit_info() (and friends) to take a real Unit* object
insted of just a unit name as parameter. The call will now prefix all
logged messages with the unit name, thus allowing the unit name to be
dropped from the various passed romat strings, simplifying invocations
drastically, and unifying log output across messages. Also, UNIT= vs.
USER_UNIT= is now derived from the Manager object attached to the Unit
object, instead of getpid(). This has the benefit of correcting the
field for --test runs.
Also contains a couple of other logging improvements:
- Drops a couple of strerror() invocations in favour of using %m.
- Not only .mount units now warn if a symlinks exist for the mount
point already, .automount units do that too, now.
- A few invocations of log_struct() that didn't actually pass any
additional structured data have been replaced by simpler invocations
of log_unit_info() and friends.
- For structured data a new LOG_UNIT_MESSAGE() macro has been added,
that works like LOG_MESSAGE() but prefixes the message with the unit
name. Similar, there's now LOG_LINK_MESSAGE() and
LOG_NETDEV_MESSAGE().
- For structured data new LOG_UNIT_ID(), LOG_LINK_INTERFACE(),
LOG_NETDEV_INTERFACE() macros have been added that generate the
necessary per object fields. The old log_unit_struct() call has been
removed in favour of these new macros used in raw log_struct()
invocations. In addition to removing one more function call this
allows generated structured log messages that contain two object
fields, as necessary for example for network interfaces that are
joined into another network interface, and whose messages shall be
indexed by both.
- The LOG_ERRNO() macro has been removed, in favour of
log_struct_errno(). The latter has the benefit of ensuring that %m in
format strings is properly resolved to the specified error number.
- A number of logging messages have been converted to use
log_unit_info() instead of log_info()
- The client code in sysv-generator no longer #includes core code from
src/core/.
- log_unit_full_errno() has been removed, log_unit_full() instead takes
an errno now, too.
- log_unit_info(), log_link_info(), log_netdev_info() and friends, now
avoid double evaluation of their parameters |
7410616cd9dbbec97cf98d75324da5cda2b2f7a2 |
|
06-May-2015 |
Lennart Poettering <lennart@poettering.net> |
core: rework unit name validation and manipulation logic
A variety of changes:
- Make sure all our calls distuingish OOM from other errors if OOM is
not the only error possible.
- Be much stricter when parsing escaped paths, do not accept trailing or
leading escaped slashes.
- Change unit validation to take a bit mask for allowing plain names,
instance names or template names or an combination thereof.
- Refuse manipulating invalid unit name |
1c2e9646e4a1720fc8ad35c705c195ae1a2c5ce0 |
|
30-Apr-2015 |
Lennart Poettering <lennart@poettering.net> |
core: simplify unit type detection logic
Introduce a new call unit_type_supported() and make use of it
everywhere.
Also, drop Manager parameter from per-type supported method prototype. |
bf74cd6549903090a62f9ad07033b8ec24ec5828 |
|
28-Apr-2015 |
Martin Pitt <martin.pitt@ubuntu.com> |
unit: Drop unused variables
src/core/unit.c: In function 'unit_coldplug':
src/core/unit.c:2884:18: warning: unused variable 'i' [-Wunused-variable]
Iterator i;
^
src/core/unit.c:2883:15: warning: unused variable 'other' [-Wunused-variable]
Unit *other;
^ |
4370633083dd9453da183c468cf89cc17254ac39 |
|
27-Apr-2015 |
Ivan Shapovalov <intelfx100@gmail.com> |
core: coldplug all units which participate in jobs during coldplugging
This is yet another attempt to fix coldplugging order (more especially,
the problem which happens when one creates a job during coldplugging and
it references a not-yet-coldplugged unit).
Now we forcibly coldplug all units which participate in jobs. This
is a superset of previously implemented handling of the UNIT_TRIGGERS
dependencies, so that handling is removed.
http://lists.freedesktop.org/archives/systemd-devel/2015-April/031212.html
https://bugs.freedesktop.org/show_bug.cgi?id=88401 (once again) |
742f41adb1b7251fcdf2201632c2a980282cdcc4 |
|
24-Apr-2015 |
Lennart Poettering <lennart@poettering.net> |
core: minor simplification |
47bc12e1ba35d38edda737dae232088d6d3ae688 |
|
24-Apr-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: don't add automatic dependencies on device units if they aren't supported
http://lists.freedesktop.org/archives/systemd-devel/2015-April/031187.html |
f78f265f405a61387c6c12a879ac0d6b6dc958db |
|
24-Apr-2015 |
Lennart Poettering <lennart@poettering.net> |
core: always coldplug units that are triggered by other units before those
Let's make sure that we don't enqueue triggering jobs for units before
those units are actually fully loaded.
http://lists.freedesktop.org/archives/systemd-devel/2015-April/031176.html
https://bugs.freedesktop.org/show_bug.cgi?id=88401 |
be847e82cf95bf8eb589778df2aa2b3d1d7ae99e |
|
24-Apr-2015 |
Lennart Poettering <lennart@poettering.net> |
Revert "core: do not spawn jobs or touch other units during coldplugging"
This reverts commit 6e392c9c45643d106673c6643ac8bf4e65da13c1.
We really shouldn't invent external state keeping hashmaps, if we can
keep this state in the units themselves. |
e911de996a72af7659e4019f03b80f11c476f3f3 |
|
21-Apr-2015 |
Lennart Poettering <lennart@poettering.net> |
core: make unit deserialization more defensive |
0f908397544811f60f33aab4ab277041c21aa089 |
|
16-Apr-2015 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: fix spurious warning about cpuacct-usage-base deserialization
The key was parsed properly, but the warning was still generated. |
0b452006de98294d1690f045f6ea2f7f6630ec3b |
|
10-Apr-2015 |
Ronny Chevalier <chevalier.ronny@gmail.com> |
shared: add process-util.[ch] |
6482f6269c87d2249e52e889a63adbdd50f2d691 |
|
10-Apr-2015 |
Ronny Chevalier <chevalier.ronny@gmail.com> |
shared: add formats-util.h |
756c09e672a08efd9e728a5cab50a641b022b84c |
|
10-Apr-2015 |
Ronny Chevalier <chevalier.ronny@gmail.com> |
core: set_put never returns -EEXIST
When the value is already there it returns 0.
Also add a test to ensure this |
15411c0cb1192799b37ec8f25d6f30e8d7292fc6 |
|
13-Mar-2015 |
David Herrmann <dh.herrmann@gmail.com> |
tree-wide: there is no ENOTSUP on linux
Replace ENOTSUP by EOPNOTSUPP as this is what linux actually uses. |
6e392c9c45643d106673c6643ac8bf4e65da13c1 |
|
07-Mar-2015 |
Ivan Shapovalov <intelfx100@gmail.com> |
core: do not spawn jobs or touch other units during coldplugging
Because the order of coldplugging is not defined, we can reference a
not-yet-coldplugged unit and read its state while it has not yet been
set to a meaningful value.
This way, already active units may get started again.
We fix this by deferring such actions until all units have been at
least somehow coldplugged.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=88401 |
5ad096b3f1331b175340129a8c9a5a9d711e5415 |
|
02-Mar-2015 |
Lennart Poettering <lennart@poettering.net> |
core: expose consumed CPU time per unit
This adds support for showing the accumulated consumed CPU time per-unit
in the "systemctl status" output. The property is also readable via the
bus. |
628c89cc68ab96fce2de7ebba5933725d147aecc |
|
28-Feb-2015 |
Lennart Poettering <lennart@poettering.net> |
core: rework device state logic
This change introduces a new state "tentative" for device units. Device
units are considered "plugged" when udev announced them, "dead" when
they are not available in the kernel, and "tentative" when they are
referenced in /proc/self/mountinfo or /proc/swaps but not (yet)
announced via udev.
This should fix a race when device nodes (like loop devices) are created
and immediately mounted. Previously, systemd might end up seeing the
mount unit before the device, and would thus pull down the mount because
its BindTo dependency on the device would not be fulfilled. |
03455c2879699852b691903343e378c28992ff6a |
|
26-Feb-2015 |
Lucas De Marchi <lucas.demarchi@intel.com> |
core: emit changes for NFailedUnits property
By notifying the clients when this property is changed it's possible to
allow "system health monitor" tools to get transitions like
running<->degraded. This is an alternative to send changes on the
SystemState property since the latter is more difficult to derive. |
98f738b62047229af4a929d7996e2ab04253b02c |
|
26-Feb-2015 |
Colin Walters <walters@verbum.org> |
unit: When stopping due to BindsTo=, log which unit caused it
I'm trying to track down a relatively recent change in systemd
which broke OSTree; see https://bugzilla.gnome.org/show_bug.cgi?id=743891
Systemd started to stop sysroot.mount, and this patch should help
me debug why at least.
While we're here, "break" on the first unit we find that will
deactivate, as there's no point in further iteration. |
5bd4b173605142c7be493aa4d958ebaef21f421d |
|
25-Feb-2015 |
Lennart Poettering <lennart@poettering.net> |
unit: use weaker dependencies between mount and device units in --user mode
When running in user mode unmounting of mount units when a device
vanishes is unlikely to work, and even if it would work is already done
by PID 1 anyway. HEnce, when creating implicit dependencies between
mount units and their backing devices, created a Wants= type dependency
in --user mode, but leave a BindsTo= dependency in --system mode. |
2eec67acbb00593e414549a7e5b35eb7dd776b1b |
|
23-Feb-2015 |
Thomas Hindoe Paaboel Andersen <phomes@gmail.com> |
remove unused includes
This patch removes includes that are not used. The removals were found with
include-what-you-use which checks if any of the symbols from a header is
in use. |
0a6f50c0afdfc434b492493bd9efab20cbee8623 |
|
12-Feb-2015 |
Thomas Hindoe Paaboel Andersen <phomes@gmail.com> |
include <poll.h> instead of <sys/poll.h>
include-what-you-use automatically does this and it makes finding
unnecessary harder to spot. The only content of poll.h is a include
of sys/poll.h so should be harmless. |
4c08c8242a687e00b289e948ccd07b96f0bc4866 |
|
12-Feb-2015 |
Lennart Poettering <lennart@poettering.net> |
core: don't fail to run services in --user instances if $HOME is missing
Otherwise we cannot even invoke systemd-exit.service anymore, thus not
even exit.
https://bugs.freedesktop.org/show_bug.cgi?id=83100
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=759320 |
418761f5864fe1ae7e9bb884259cc9933ae8ad0c |
|
11-Feb-2015 |
Lennart Poettering <lennart@poettering.net> |
core: correct a log message
The log message talks specifically about services, though it actually
applies to any kind of unit. |
63c372cb9df3bee01e3bf8cd7f96f336bddda846 |
|
03-Feb-2015 |
Lennart Poettering <lennart@poettering.net> |
util: rework strappenda(), and rename it strjoina()
After all it is now much more like strjoin() than strappend(). At the
same time, add support for NULL sentinels, even if they are normally not
necessary. |
5ffa8c818120e35c89becd938d160235c069dd12 |
|
01-Feb-2015 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Add a snprinf wrapper which checks that the buffer was big enough
If we scale our buffer to be wide enough for the format string, we
should expect that the calculation was correct.
char_array_0() invocations are removed, since snprintf nul-terminates
the output in any case.
A similar wrapper is used for strftime calls, but only in timedatectl.c. |
82a2b6bb5e4e5d294f09af778c48974a7857afb6 |
|
28-Jan-2015 |
Lennart Poettering <lennart@poettering.net> |
core: output unit status output strings to console, only if we actually are changing unit state
Unit _start() and _stop() implementations can fail with -EAGAIN to delay
execution temporarily. Thus, we should not output status messages before
invoking these calls, but after, and only when we know that the
invocation actually made a change. |
a354329f724d6ce913d2ccffb2be8f3327a67faa |
|
06-Jan-2015 |
Lennart Poettering <lennart@poettering.net> |
core: add new logic for services to store file descriptors in PID 1
With this change it is possible to send file descriptors to PID 1, via
sd_pid_notify_with_fds() which PID 1 will store individually for each
service, and pass via the usual fd passing logic on next invocation.
This is useful for enable daemon reload schemes where daemons serialize
their state to /run, push their fds into PID 1 and terminate, restoring
their state on next start from the data in /run and passed in from PID
1.
The fds are kept by PID 1 as long as no POLLHUP or POLLERR is seen on
them, and the service they belong to are either not dead or failed, or
have a job queued. |
9c3349e23b14db27e7ba45f82cf647899c563ea9 |
|
05-Jan-2015 |
Lennart Poettering <lennart@poettering.net> |
core: rework counting of running jobs
Let's unify the code that counts the running jobs a bit, in order to
make sure we are less likely to miss one.
This is related to this bug:
https://bugs.freedesktop.org/show_bug.cgi?id=87349
However, it probably won't fix it fully, and I cannot reproduce the issue.
The change also adds an explicit assert change when the counter is off. |
f131770b1465fbf423881f16ba85523a05f846fe |
|
31-Dec-2014 |
Veres Lajos <vlajos@gmail.com> |
tree-wide: spelling fixes
https://github.com/vlajos/misspell_fixer
https://github.com/torstehu/systemd/commit/b6fdeb618cf2f3ce1645b3315f15f482710c7ffa
Thanks to Torstein Husebo <torstein@huseboe.net>. |
1a7f1b385cd9de8a0da934fadc379860f914ef33 |
|
16-Dec-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Move dropin listing to shared
No functional change. This is in preparation for using this in
systemctl in the future. |
0faacd470dfbd24f4c6504da6f04213aa05f9d19 |
|
15-Dec-2014 |
Lennart Poettering <lennart@poettering.net> |
unit: handle nicely of certain unit types are not supported on specific systems
Containers do not really support .device, .automount or .swap units;
Systems compiled without support for swap do not support .swap units;
Systems without kdbus do not support .busname units.
With this change attempts to start a unsupported unit types will result
in an immediate "unsupported" job result, which is a lot more
descriptive then before. Also, attempts to start device units in
containers will now immediately fail instead of causing jobs to be
enqueued that never go away. |
96aad8d15a324d0e956a4e5653a11a67b209b41a |
|
10-Dec-2014 |
Lennart Poettering <lennart@poettering.net> |
sd-bus: move common errors src/shared/bus-errors.h → src/libsystemd/sd-bus/bus-common-errors.h
Stuff in src/shared/ should not use stuff from src/libsystemd/ really. |
adb76a701d870b980f7949bcfece2c1547b4976d |
|
09-Dec-2014 |
WaLyong Cho <walyong.cho@samsung.com> |
unit: update unit dropin paths and time when dropin file is written.
If a unit is set property by "systemctl set-property", a new dropin
file is generated. But the unit's dropin_paths and dropin_mtime are
not updated. So the unit is shown as need daemon reload.
Update unit dropin_paths and dropin_mtime also when dropin file is
written. |
b1491eba40715438b0ac874f2be79d5622b971e1 |
|
09-Dec-2014 |
Lennart Poettering <lennart@poettering.net> |
core: rename unit_destroy_cgroup() to unit_destroy_cgroup_if_empty() since it's not quite as destructive as it sounds nowadays |
d2dc52dbc45051faa6356213a537081084e9dda4 |
|
02-Dec-2014 |
Lennart Poettering <lennart@poettering.net> |
systemctl: show unit file preset state in "systemctl status" output" |
31938a8560a664c32a9d72f1fc2d4347b232e6e9 |
|
28-Nov-2014 |
Michal Schmidt <mschmidt@redhat.com> |
core: convert log_unit_*() to log_unit_*_errno()
Using:
find . -name '*.[ch]' | xargs sed -r -i -e \
's/log_unit_(debug|info|notice|warning|error|emergency)\(([^"]+), "(.*)%s"(.*), strerror\(-([a-zA-Z_]+)\)\);/log_unit_\1_errno(\2, \5, "\3%m"\4);/' |
e2cc6eca73cd1df8be552d7c23f9ff3d69c06f1e |
|
28-Nov-2014 |
Lennart Poettering <lennart@poettering.net> |
log: fix order of log_unit_struct() to match other logging calls
Also, while we are at it, introduce some syntactic sugar for creating
ERRNO= and MESSAGE= structured logging fields. |
79008bddf679a5e0900369950eb346c9fa687107 |
|
27-Nov-2014 |
Lennart Poettering <lennart@poettering.net> |
log: rearrange log function naming
- Rename log_meta() → log_internal(), to follow naming scheme of most
other log functions that are usually invoked through macros, but never
directly.
- Rename log_info_object() to log_object_info(), simply because the
object should be before any other parameters, to follow OO-style
programming style. |
493657337ad8569e0998a3afa7d6fb357757364a |
|
06-Nov-2014 |
Lennart Poettering <lennart@poettering.net> |
core: get rid of condition.c and move the remaining call into util.c
That way only one file with condition code remaining, in src/shared/,
rather than src/core/.
Next step: dropping the "-util" suffix from condition-util.[ch]. |
59fccdc587bc179c1638916ee16a24099f94f81f |
|
06-Nov-2014 |
Lennart Poettering <lennart@poettering.net> |
core: introduce the concept of AssertXYZ= similar to ConditionXYZ=, but fatal for a start job if not met |
7358dc029ab8cb8f9d83eb847389d84f822ccfe8 |
|
31-Oct-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Convert the rest to sd_bus_errnomap
I tried to preserve most errno values, but in some cases they were
inconsistent (different errno values for the same error name) or just
mismatched. |
db2cb23b5b179707000d28a11efb3d888d06ee80 |
|
28-Oct-2014 |
Umut Tezduyar Lindskog <umut.tezduyar@axis.com> |
core: send sigabrt on watchdog timeout to get the stacktrace
if sigabrt doesn't do the job, follow regular shutdown
routine, sigterm > sigkill. |
127d5fd1563a74411aaceeadd251f98fd52216d7 |
|
28-Oct-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
manager: convert ephemeral to enum
In preparation for subsequent changes. |
f189ab18de69d3dee81117d7925fb370cd038f0f |
|
28-Oct-2014 |
Lennart Poettering <lennart@poettering.net> |
job: optionally, when a job timeout is hit, also execute a failure action |
7c0b05e58ba6a74317a332c475196c656b321829 |
|
23-Oct-2014 |
Michal Schmidt <mschmidt@redhat.com> |
unit: adjust for the possibility of set_move() failing |
09a65f92994445d8fecca34e71b423a8be1769bf |
|
23-Oct-2014 |
Michal Schmidt <mschmidt@redhat.com> |
unit: place reservations before merging other's dependencies
With the hashmap implementation that uses chaining the reservations
merely ensure that the merging won't result in long bucket chains.
With a future alternative implementation it will additionally reserve
memory to make sure the merging won't fail. |
cb87a73b45503eaa6bead291423a529b00d27156 |
|
08-Oct-2014 |
Lukas Nykryn <lnykryn@redhat.com> |
unit: move UnitDependency to unit-name |
4d5dec2389d8e6ce78b45d3058220888f4a93db7 |
|
02-Oct-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Rename user_runtime to user_runtime_dir
This makes this function name similar to user_config_home() and makes
it match the name of the environment variable. |
718880ba0d557a045e2f969e141cbd59e78c76f4 |
|
02-Oct-2014 |
Steven Allen <steven@stebalien.com> |
add a transient user unit directory
This patch adds a transient user unit directory under
`$XDG_RUNTIME_DIR/systemd/user/` and stores transient user-instance
units (such as those created by `systemd-run --user`) under there
instead of putting them in $XDG_CONFIG_HOME/systemd/user/.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=67331 |
d5099efc47d4e6ac60816b5381a5f607ab03f06e |
|
15-Sep-2014 |
Michal Schmidt <mschmidt@redhat.com> |
hashmap: introduce hash_ops to make struct Hashmap smaller
It is redundant to store 'hash' and 'compare' function pointers in
struct Hashmap separately. The functions always comprise a pair.
Store a single pointer to struct hash_ops instead.
systemd keeps hundreds of hashmaps, so this saves a little bit of
memory. |
06b643e7f5a3b79005dd57497897ab7255fe3659 |
|
30-Aug-2014 |
Ruben Kerkhof <ruben@rubenkerkhof.com> |
Fix a few more typos |
4c94096027f21d4ed0efe991534a926d39d52369 |
|
21-Aug-2014 |
Lennart Poettering <lennart@poettering.net> |
core: unify how we generate the prefix string when dumping unit state |
3f3cc397043e69c9e9a690194a6a1043bf6466c5 |
|
18-Aug-2014 |
Lennart Poettering <lennart@poettering.net> |
core: minor modernizations |
ff50244582bf69e8489bba6ce59a21663d7f8274 |
|
18-Aug-2014 |
Lennart Poettering <lennart@poettering.net> |
units: fix BindsTo= logic when applied relative to services with Type=oneshot
Start jobs for Type=oneshot units are successful when the unit state
transition activating → inactive took place. In such a case all units
that BindsTo= on it previously would continue to run, even though the unit
they dependet on was actually already gone. |
d1fab3fe88ae873b26b50359758776ad9e31968e |
|
08-Aug-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: warn when merged units have conflicting dependencies
A unit should not Conflict with itself. It also does not make
much sense for a unit to be After or Before itself, or to
trigger itself in some way.
If one of those dependency types is encountered, warn, instead
of dropping it silently like other dependency types.
% build/systemd-analyze verify test/loopy3.service
...
Dependency Conflicts dropped when merging unit loopy4.service into loopy3.service
Dependency ConflictedBy dropped when merging unit loopy4.service into loopy3.service |
e66047ff62c971eefa32b42373420d61e3f2a9c1 |
|
08-Aug-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: do not add dependencies to self
Adds a pair of files which cause a segfault (also with
systemd-analyze verify).
https://bugzilla.redhat.com/show_bug.cgi?id=1124843 |
cf7d80a5fe549d4db11800015e02220dccec3096 |
|
21-Jul-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
path-lookup: make SYSTEMD_UNIT_PATH more flexible
It can now contain more than one directory, and can be used
to only prepend, not totally override, the normal load path. |
8eea868708923a092ee85d6146ba4c04b7baea06 |
|
01-Jul-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
cryptsetup: allow x-systemd.device-timeout
https://bugs.freedesktop.org/show_bug.cgi?id=54210 |
2968644080fd103062f070e83edd620e0a58c44d |
|
01-Jul-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Move x-systemd-device.timeout handling from core to fstab-generator
Instead of adjusting job timeouts in the core, let fstab-generator
write out a dropin snippet with the appropriate JobTimeout.
x-systemd-device.timeout option is removed from Options= line
in the generated unit.
The functions to write dropins are moved from core/unit.c to
shared/dropin.c, to make them available outside of core.
generator.c is moved to libsystemd-label, because it now uses
functions defined in dropin.c, which are in libsystemd-label. |
865cc19a34cd9a3ff98a7b3754747f4904f56faa |
|
25-May-2014 |
Jonathan Boulle <jonathanboulle@gmail.com> |
Fix several small typos |
9a0549093332880df47c4218209ce126b8586835 |
|
22-May-2014 |
Lennart Poettering <lennart@poettering.net> |
cgroups: simplify CPUQuota= logic
Only accept cpu quota values in percentages, get rid of period
definition.
It's not clear whether the CFS period controllable per-cgroup even has a
future in the kernel, hence let's simplify all this, hardcode the period
to 100ms and only accept percentage based quota values. |
db785129c9bce9294a118484cbc9bb6935ca34c2 |
|
22-May-2014 |
Lennart Poettering <lennart@poettering.net> |
cgroup: rework startup logic
Introduce a (unsigned long) -1 as "unset" state for cpu shares/block io
weights, and keep the startup unit set around all the time. |
95ae05c0e79868c22b3e8e6fbc53432786876730 |
|
22-May-2014 |
WaLyong Cho <walyong.cho@samsung.com> |
core: add startup resource control option
Similar to CPUShares= and BlockIOWeight= respectively. However only
assign the specified weight during startup. Each control group
attribute is re-assigned as weight by CPUShares=weight and
BlockIOWeight=weight after startup. If not CPUShares= or
BlockIOWeight= be specified, then the attribute is re-assigned to each
default attribute value. (default cpu.shares=1024, blkio.weight=1000)
If only CPUShares=weight or BlockIOWeight=weight be specified, then
that implies StartupCPUShares=weight and StartupBlockIOWeight=weight. |
9bdb98c59451ed090f8d35d470a54710f389ce71 |
|
16-May-2014 |
Lennart Poettering <lennart@poettering.net> |
core: make sure to serialize jobs for all units
Previously we wouldn't serialize jobs for units that themselves have
nothing to serialize.
http://lists.freedesktop.org/archives/systemd-devel/2014-May/019051.html |
4e595329a93ed190795c2e24bf132d5028ec6a72 |
|
15-May-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Make sure that keys are properly removed from hashmap
This is a speculative fix for https://bugzilla.redhat.com/show_bug.cgi?id=1088865.
Even though I cannot find a code path that where this would be
an issue, for consistency, if we assume that cgroup_path might have
been set before we got to unit_deserialize, we should make sure that
the unit is removed from the hashmap before we free the key. This seems
to be the only place where the key could be prematurely freed, leading to
hashmap corruption. |
b2f8b02ec27dfec9cbd23573f47aba494f2e9b5f |
|
25-Apr-2014 |
Lennart Poettering <lennart@poettering.net> |
core: expose CFS CPU time quota as high-level unit properties |
598459cebac7cc93089769a992e7b03287f77e12 |
|
19-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
core: rework context initialization/destruction logic
Let's automatically initialize the kill, exec and cgroup contexts of the
various unit types when the object is constructed, instead of
invididually in type-specific code.
Also, when PrivateDevices= is set, set DevicePolicy= to closed. |
b46a529c7c2d8e1db000ff00ddf42fc9f86d54e1 |
|
19-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
core: when PrivateTmp= is set for a unit, make sure to order it after /tmp and /var/tmp are mounted |
f1660f96f59dad860d39f148c3a747050d112763 |
|
18-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
core: drop CAP_MKNOD when PrivateDevices= is set |
6f285378aa6e4b5b23c939d1fea16f9ab0a57efb |
|
17-Mar-2014 |
Miklos Vajna <vmiklos@vmiklos.hu> |
core, libsystemd, systemd, timedate, udev: spelling fixes |
f755e3b74b94296a534033dd6ae04d9506434210 |
|
12-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
core: introduce system state enum
The system state knows the states starting →
running/degraded/maintenance → stopping, where:
starting = system startup
running = normal operation
degraded = at least one unit is currently in failed state
maintenance = rescue/emergency mode is active or queued
stopping = system shutdown |
2c5859afecee81e345fc9526b1083bf79990ffb8 |
|
07-Mar-2014 |
Daniel Mack <zonque@gmail.com> |
Make tables for DEFINE_STRING_TABLE_LOOKUP consistent
Bring some arrays that are used for DEFINE_STRING_TABLE_LOOKUP() in the
same order than the enums they reference.
Also, pass the corresponding _MAX value to the array initalizer where
appropriate. |
bd44e61b0480712ec5585ff7b0295362a5f9dd36 |
|
06-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
core: correctly unregister PIDs from PID hashtables |
517d56b1d0f67dcf76710bc1e17b05518b8cabe6 |
|
05-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
missing: if RLIMIT_RTTIME is not defined by the libc, then we need a new define for the max number of rlimits, too |
6e18964d3a365567954fe10ddcfad74babdc427c |
|
04-Mar-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Introduce strv_consume which takes ownership
This mirrors set_consume and makes the common use a bit nicer. |
8f8f05a919355095518911135c3d630f4620a9b0 |
|
03-Mar-2014 |
Lennart Poettering <lennart@poettering.net> |
bus: add sd_bus_track object for tracking peers, and port core over to it
This is primarily useful for services that need to track clients which
reference certain objects they maintain, or which explicitly want to
subscribe to certain events. Something like this is done in a large
number of services, and not trivial to do. Hence, let's unify this at
one place.
This also ports over PID 1 to use this to ensure that subscriptions to
job and manager events are correctly tracked. As a side-effect this
makes sure we properly serialize and restore the track list across
daemon reexec/reload, which didn't work correctly before.
This also simplifies how we distribute messages to broadcast to the
direct busses: we only track subscriptions for the API bus and
implicitly assume that all direct busses are subscribed. This should be
a pretty OK simplification since clients connected via direct bus
connections are shortlived anyway. |
f513e420c8b1a1d4c13092cd378f048b69793497 |
|
26-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
exec: imply NoNewPriviliges= only when seccomp filters are used in user mode |
085afe36cb823e7d5b8c5f3ef21ebb9639bac78b |
|
24-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: add global settings for enabling CPUAccounting=, MemoryAccounting=, BlockIOAccounting= for all units at once |
c35fa384d00dc5dc7d9f339113b015a3f8a5cf79 |
|
24-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: gc half-created stub units |
bcfce235a3d757f0ec3b0c01e8583382db1adfe2 |
|
20-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
macro: introduce a nice macro for disabling -Wformat-nonliteral temporarily |
db57f3c6d11864f4227bb6734a0d509695a32a7d |
|
20-Feb-2014 |
Daniel Mack <zonque@gmail.com> |
core/unit: fix unit_add_target_dependencies() for units with no dependencies
For units without any dependencies, r needs to be initialized to 0.
Otherwise, the return value of unit_add_target_dependencies() is
unspecified. |
9f5650aecb22a1d864b2c0b749910556795f1490 |
|
18-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
util: generalize code that checks whether PIDs are alive or unwaited for |
6d2357247b198314d972932415d65a42f83a9b6e |
|
17-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: fix property changes in transient units |
e954c9cfa687065244adebaa15314082ba6d7ec2 |
|
17-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
unit: slice dependencies should not be subject to DefaultDependencies |
bc432dc7eb62c5671f2b741a86a66393adb350dc |
|
17-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: rework cgroup mask propagation
Previously a cgroup setting down tree would result in cgroup membership
additions being propagated up the tree and to the siblings, however a
unit could never lose cgroup memberships again. With this change we'll
make sure that both cgroup additions and removals propagate properly. |
b33918c210a9b7a651e4e91cf7429967f1df6c25 |
|
13-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: make StopWhenUnneeded work in conjunction with units that fail
during their start job
https://bugzilla.redhat.com/show_bug.cgi?id=997031 |
743970d2ea6d08aa7c7bff8220f6b7702f2b1db7 |
|
07-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: one step back again, for nspawn we actually can't wait for cgroups running empty since systemd will get exactly zero notifications about it |
5ba6985b6c8ef85a8bcfeb1b65239c863436e75b |
|
07-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: allow PIDs to be watched by two units at the same time
In some cases it is interesting to map a PID to two units at the same
time. For example, when a user logs in via a getty, which is reexeced to
/sbin/login that binary will be explicitly referenced as main pid of the
getty service, as well as implicitly referenced as part of the session
scope. |
8190da36f71a887945297cd65d6426c78b466a50 |
|
07-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: don't send duplicate SIGCONT when killing units |
a911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3 |
|
07-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: watch SIGCHLD more closely to track processes of units with no reliable cgroup empty notifier
When a process dies that we can associate with a specific unit, start
watching all other processes of that unit, so that we can associate
those processes with the unit too.
Also, for service units start doing this as soon as we get the first
SIGCHLD for either control or main process, so that we can follow the
processes of the service from one to the other, as long as process that
remain are processes of the ones we watched that died and got reassigned
to us as parent.
Similar, for scope units start doing this as soon as the scope
controller abandons the unit, and thus management entirely reverts to
systemd. To abandon a unit introduce a new Abandon() scope unit method
call. |
97e0691f85da6e7ea131ce80bd61e2d47a737a61 |
|
06-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: only send SIGHUP when doing first kill, not when doing final sigkill |
1baccdda2e954214e0c5463d6ed8f06009b33c41 |
|
05-Feb-2014 |
Lennart Poettering <lennart@poettering.net> |
core: don't wait for non-control/non-main processes when killing processes on the host either
Since the current kernel cgroup notification logic is easily confused by
existing subgroups, let's do the same thing as in containers before. and
just not wait for non-control and non-main processes.
This should be corrected as soon as we have sane cgroup notifications
from the kernel. |
bc6aed7b8b17901ef46c3af9513ae63372b7b413 |
|
29-Jan-2014 |
Lennart Poettering <lennart@poettering.net> |
core: in containers, don't wait for cgroup empty notifications which will never come |
6294b8a92db8579210d4fc9ce74097a15005b3e6 |
|
29-Jan-2014 |
Lennart Poettering <lennart@poettering.net> |
core: use a bit more PID_FMT |
58ea275a68cd242ad60161bcb7582614d1d89f13 |
|
29-Jan-2014 |
Lennart Poettering <lennart@poettering.net> |
core: introduce new KillMode=mixed which sends SIGTERM only to the main process, but SIGKILL to all daemon processes
This should fix some race with terminating systemd --user, where the
system systemd instance might race against the user systemd instance
when sending SIGTERM. |
36be24c8f82141fda995841d177e9e4113e1ef06 |
|
27-Jan-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: require mounts for the root and working directories
We know that launching a unit will fail if some required directories
haven't been mounted yet. There's no point in starting it just to
have it fail even before it gets a chance to run. |
70b64bd3561c2bbe6cad2e590d4e3e25426f75b5 |
|
27-Jan-2014 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: simplify check for path absoluteness
Just a microopt. |
f78e6385dc4cee0a1f399c4c89ebf823c108d447 |
|
26-Dec-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Use enums to make it obvious what boolean params mean
Suggested-by: Russ Allbery <rra@debian.org> |
9091e686f43184065381aa71929e3df36a4ea2e1 |
|
14-Dec-2013 |
Thomas Hindoe Paaboel Andersen <phomes@gmail.com> |
Add more _printf_'s for format-nonliterals
Clang is a bit more strict wrt format-nonliterals:
http://clang.llvm.org/docs/LanguageExtensions.html#format-string-checking
Adding these extra printf attributes also makes gcc able to find more
problems. E.g. this patch uncovers a format issue in udev-builtin-path_id.c
Some parts looked intetional about breaking the format-nonliteral check.
I added some supression for warnings there. |
2b6bf07dd23bb467099d213c97b3875c5e453491 |
|
07-Dec-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Get rid of our reimplementation of basename
The only problem is that libgen.h #defines basename to point to it's
own broken implementation instead of the GNU one. This can be fixed
by #undefining basename. |
6a371e23ee0e47827fb4e3aa469ed84da2599304 |
|
03-Dec-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
systemd: treat reload failure as failure
systemctl reload "suceeded" on stopped units, but it is documented
to fail in this case.
https://bugzilla.redhat.com/show_bug.cgi?id=1036845 |
e821075a23fdfa3ca7738fc30bb2d4c430fe10c0 |
|
02-Dec-2013 |
Lennart Poettering <lennart@poettering.net> |
bus: add .busname unit type to implement kdbus-style bus activation |
28b99ccdcb43937123b170509558af6296a0d271 |
|
28-Nov-2013 |
Kay Sievers <kay@vrfy.org> |
core: initialize variable |
613b411c947635136637f8cdd66b94512f761eab |
|
27-Nov-2013 |
Lennart Poettering <lennart@poettering.net> |
service: add the ability for units to join other unit's PrivateNetwork= and PrivateTmp= namespaces |
d420282b28f50720e233ccb1c02547c562195653 |
|
26-Nov-2013 |
Lennart Poettering <lennart@poettering.net> |
core: replace OnFailureIsolate= setting by a more generic OnFailureJobMode= setting and make use of it where applicable |
eeaedb7c26375352c32ec290cd716f2ff2dbe61a |
|
25-Nov-2013 |
Lennart Poettering <lennart@poettering.net> |
core: include following set data in dump |
6414b7c981378a6eef480f6806d7cbfc98ca22a1 |
|
22-Nov-2013 |
David Strauss <david@davidstrauss.net> |
cgroups: Cache controller masks and optimize queues. |
718db96199eb307751264e4163555662c9a389fa |
|
20-Nov-2013 |
Lennart Poettering <lennart@poettering.net> |
core: convert PID 1 to libsystemd-bus
This patch converts PID 1 to libsystemd-bus and thus drops the
dependency on libdbus. The only remaining code using libdbus is a test
case that validates our bus marshalling against libdbus' marshalling,
and this dependency can be turned off.
This patch also adds a couple of things to libsystem-bus, that are
necessary to make the port work:
- Synthesizing of "Disconnected" messages when bus connections are
severed.
- Support for attaching multiple vtables for the same interface on the
same path.
This patch also fixes the SetDefaultTarget() and GetDefaultTarget() bus
calls which used an inappropriate signature.
As a side effect we will now generate PropertiesChanged messages which
carry property contents, rather than just invalidation information. |
9cd861842ccb07372fbd665f2e6c054daaedacb4 |
|
16-Nov-2013 |
Olivier Brunel <jjk@jjacky.com> |
Fix RemainAfterExit services keeping a hold on console
When a service exits succesfully and has RemainAfterExit set, its hold
on the console (in m->n_on_console) wasn't released since the unit state
didn't change. |
e48614c4b268d9e7ecbd478d1d2410f9e92095e0 |
|
16-Nov-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: some more _cleanup_free_ |
2f38577f3040eedebfe1ace05d5b5a779a588af1 |
|
14-Nov-2013 |
Olivier Brunel <jjk@jjacky.com> |
Only disable output on console during boot if needed
If there are no more jobs on console, no need/we shouldn't disable output. |
9588bc32096fc8342bfd8b989689717186d7d86e |
|
08-Nov-2013 |
Lennart Poettering <lennart@poettering.net> |
Remove dead code and unexport some calls
"make check-api-unused" informs us about code that is not used anymore
or that is exported but only used internally. Fix these all over the
place. |
71fda00f320379f5cbee8e118848de98caaa229d |
|
14-Oct-2013 |
Lennart Poettering <lennart@poettering.net> |
list: make our list macros a bit easier to use by not requring type spec on each invocation
We can determine the list entry type via the typeof() gcc construct, and
so we should to make the macros much shorter to use. |
6891529fe1176c046ece579807ff48e3191692f3 |
|
13-Oct-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
drop-ins: check return value
If the function failed, nothing serious would happen
because unlink would probably return EFAULT, but this
would obscure the real error and is a bit sloppy. |
a57f7e2c828b852eb32fd810dcea041bb2975501 |
|
26-Sep-2013 |
Lennart Poettering <lennart@poettering.net> |
core: rework how we match mount units against each other
Previously to automatically create dependencies between mount units we
matched every mount unit agains all others resulting in O(n^2)
complexity. On setups with large amounts of mount units this might make
things slow.
This change replaces the matching code to use a hashtable that is keyed
by a path prefix, and points to a set of units that require that path to
be around. When a new mount unit is installed it is hence sufficient to
simply look up this set of units via its own file system paths to know
which units to order after itself.
This patch also changes all unit types to only create automatic mount
dependencies via the RequiresMountsFor= logic, and this is exposed to
the outside to make things more transparent.
With this change we still have some O(n) complexities in place when
handling mounts, but that's currently unavoidable due to kernel APIs,
and still substantially better than O(n^2) as before.
https://bugs.freedesktop.org/show_bug.cgi?id=69740 |
b58b8e11c5f769e3c80d5169fdcc4bd04b882b7d |
|
28-Aug-2013 |
Harald Hoyer <harald@redhat.com> |
Do not realloc strings, which are already in the hashmap as keys
This prevents corruption of the hashmap, because we would free() the
keys in the hashmap, if the unit is already in there, with the same
cgroup path. |
68eda4bd168306f51c90e5d22824c494d709289e |
|
08-Aug-2013 |
Ronny Chevalier <rchevalier@aldebaran-robotics.com> |
dbus: use _cleanup_free_ instead of freeing ourself |
82659fd7571bda0f3dce9755b89a23c411d53dda |
|
30-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
core: optionally send SIGHUP in addition to the configured kill signal
This is useful to fake session ends for processes like shells. |
52990c2e0eabd1c11280f553f858062d4165b92f |
|
18-Jul-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
systemd,systemctl: export condition status and show failing condition
$ systemctl --user status hoohoo
hoohoo.service
Loaded: loaded (/home/zbyszek/.config/systemd/user/hoohoo.service; static)
Active: inactive (dead)
start condition failed at Tue 2013-06-25 18:08:42 EDT; 1s ago
ConditionPathExists=/tmp/hoo was not met
Full information is exported over D-Bus:
[(condition, trigger, negate, param, state),...]
where state is one of "failed" (<0), "untested" (0), "OK" (>0).
I've decided to use 0 for "untested", because it might be useful to
differentiate different types of failure later on, without breaking
compatibility.
systemctl shows the failing condition, if there was a non-trigger
failing condition, or says "none of the trigger conditions were met",
because there're often many trigger conditions, and they must all
fail for the condition to fail, so printing them all would consume
a lot of space, and bring unnecessary attention to something that is
quite low-level. |
4b744dfabebd10bf0f13b64060f44b1bd6c82704 |
|
18-Jul-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
systemd: log failed conditions
ConditionPathExists=/tmp/nosuchpath failed for nosuchpath.service. |
31a7eb86f18b0466681d6fbe80c148f96c551c80 |
|
16-Jul-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
systemd: do not output status messages once gettys are running
Make Type=idle communication bidirectional: when bootup is finished,
the manager, as before, signals idling Type=idle jobs to continue.
However, if the boot takes too long, idling jobs signal the manager
that they have had enough, wait a tiny bit more, and continue, taking
ownership of the console. The manager, when signalled that Type=idle
jobs are done, makes a note and will not write to the console anymore.
This is a cosmetic issue, but quite noticable, so let's just fix it.
Based on Harald Hoyer's patch.
https://bugs.freedesktop.org/show_bug.cgi?id=54247
http://unix.stackexchange.com/questions/51805/systemd-messages-after-starting-login/ |
f440e1bb8a0b1262c7649da502d0e9358019b968 |
|
12-Jul-2013 |
Lukas Nykryn <lnykryn@redhat.com> |
unit: check correct variable after strdup |
b9ec9359369f224bfb13db616f97401a6a177bd8 |
|
11-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
core: simplify drop-in writing logic a bit
let's make use of some format string magic! |
d7bd3de0654669e65b9642c248c5fa6d1d9a9f61 |
|
11-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
cgroup: simplify how instantiated units are mapped to cgroups
Previously for an instantiated unit foo@bar.service we created a cgroup
foo@.service/foo@bar.service, in order to place all instances of the
same template inside the same subtree. As we now implicitly add all
instantiated units into one per-template slice we don't need this
complexity anymore, and instance units can map directly to the cgroups
of their full name. |
a8833944647bfd10e43569646be954db5cbac54e |
|
11-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
core: implicitly create a per-template slice for all instantiated units by default
If no explicit slice is configured for an instantiated unit, create an
implicit one for all instances of the same template. |
72673e866a83e6aafdbb599eb3eff2617b7dc79d |
|
10-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: when deserializing cgroup path add it back into cgroup hashmap
Also, properly remove cgroup path from hashmap when freeing unit. |
6fa4853328e3d78d092172fa54effb7e785d0a85 |
|
10-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
core: serialize/deserialize bus subscribers |
cf1265e188e876dda906dca0029248a06dc80c33 |
|
02-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
core: make GC more aggressive
Since we should allow registering/unregistering transient units with the
same name in a tight-loop, we need to make the GC more aggressive, so
that dead units are cleaned up immediately instead of later.
hence, execute the GC sweep on every event loop iteration and clean up
units. This of course, means we need to be careful with adding units to
the GC queue, which we already are since we execute check_gc() of each
unit type already when adding something to the queue. |
8aec412ff697bc14995746953912ca6fdf2c9ba8 |
|
02-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
machined: sync to /run after job completed |
6c12b52e19640747e96f89d85422941a23dc6b29 |
|
01-Jul-2013 |
Lennart Poettering <lennart@poettering.net> |
core: add new "scope" unit type for making a unit of pre-existing processes
"Scope" units are very much like service units, however with the
difference that they are created from pre-existing processes, rather
than processes that systemd itself forks off. This means they are
generated programmatically via the bus API as transient units rather
than from static configuration read from disk. Also, they do not provide
execution-time parameters, as at the time systemd adds the processes to
the scope unit they already exist and the parameters cannot be applied
anymore.
The primary benefit of this new unit type is to create arbitrary cgroups
for worker-processes forked off an existing service.
This commit also adds a a new mode to "systemd-run" to run the specified
processes in a scope rather then a transient service. |
c2756a68401102786be343712c0c35acbd73d28d |
|
28-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
core: add transient units
Transient units can be created via the bus API. They are configured via
the method call parameters rather than on-disk files. They are subject
to normal GC. Transient units currently may only be created for
services (however, we will extend this), and currently only ExecStart=
and the cgroup parameters can be configured (also to be extended).
Transient units require a unique name, that previously had no
configuration file on disk.
A tool systemd-run is added that makes use of this functionality to run
arbitrary command lines as transient services:
$ systemd-run /bin/ping www.heise.de
Will cause systemd to create a new transient service and run ping in it. |
241da3287d0c16f79e2f415f17543599b3e73c85 |
|
28-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: make sure the dropins we write are high-priority |
b42defe3b8ed3947d85db654a6cdb1b9999f394d |
|
27-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
dbus: make more cgroup attributes runtime settable |
8e2af478402414f060bbc16e1b4bbe7de1779c13 |
|
27-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
dbus: add infrastructure for changing multiple properties at once on units and hook some cgroup attributes up to it
This introduces two bus calls to make runtime changes to selected bus
properties, optionally with persistence.
This currently hooks this up only for three cgroup atributes, but this
brings the infrastructure to add more changable attributes.
This allows setting multiple attributes at once, and takes an array
rather than a dictionary of properties, in order to implement simple
resetting of lists using the same approach as when they are sourced from
unit files. This means, that list properties are appended to by this
call, unless they are first reset via assigning the empty list. |
4ad490007b70e6ac18d3cb04fa2ed92eba1451fa |
|
27-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
core: general cgroup rework
Replace the very generic cgroup hookup with a much simpler one. With
this change only the high-level cgroup settings remain, the ability to
set arbitrary cgroup attributes is removed, so is support for adding
units to arbitrary cgroup controllers or setting arbitrary paths for
them (especially paths that are different for the various controllers).
This also introduces a new -.slice root slice, that is the parent of
system.slice and friends. This enables easy admin configuration of
root-level cgrouo properties.
This replaces DeviceDeny= by DevicePolicy=, and implicitly adds in
/dev/null, /dev/zero and friends if DeviceAllow= is used (unless this is
turned off by DevicePolicy=). |
9444b1f20e311f073864d81e913bd4f32fe95cfd |
|
20-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
logind: add infrastructure to keep track of machines, and move to slices
- This changes all logind cgroup objects to use slice objects rather
than fixed croup locations.
- logind can now collect minimal information about running
VMs/containers. As fixed cgroup locations can no longer be used we
need an entity that keeps track of machine cgroups in whatever slice
they might be located. Since logind already keeps track of users,
sessions and seats this is a trivial addition.
- nspawn will now register with logind and pass various bits of metadata
along. A new option "--slice=" has been added to place the container
in a specific slice.
- loginctl gained commands to list, introspect and terminate machines.
- user.slice and machine.slice will now be pulled in by logind.service,
since only logind.service requires this slice. |
702a2d8f6a90b999cef0fbf75a226a770f863b00 |
|
18-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
core: unref slice ref after use |
a016b9228f338cb9b380ce7e00826ef462767d98 |
|
17-Jun-2013 |
Lennart Poettering <lennart@poettering.net> |
core: add new .slice unit type for partitioning systems
In order to prepare for the kernel cgroup rework, let's introduce a new
unit type to systemd, the "slice". Slices can be arranged in a tree and
are useful to partition resources freely and hierarchally by the user.
Each service unit can now be assigned to one of these slices, and later
on login users and machines may too.
Slices translate pretty directly to the cgroup hierarchy, and the
various objects can be assigned to any of the slices in the tree. |
d956ac29a1b8120e83922fa8e75cdd8f6e562529 |
|
06-May-2013 |
Lennart Poettering <lennart@poettering.net> |
core: unit_inactive_or_pending() should actually do as it claims |
44a6b1b68029833893f6e9cee35aa27a974038f6 |
|
03-May-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Add __attribute__((const, pure, format)) in various places
I'm assuming that it's fine if a _const_ or _pure_ function
calls assert. It is assumed that the assert won't trigger,
and even if it does, it can only trigger on the first call
with a given set of parameters, and we don't care if the
compiler moves the order of calls. |
5954c07433b134694256b9989f2ad3f85a643976 |
|
30-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
cgroup: do not allow manipulating the cgroup path of units within the systemd:/system subtree |
fcf8c44041a5138a170f9a442809c032259a26b1 |
|
26-Apr-2013 |
Mirco Tischler <mt-ml@gmx.de> |
core: remove duplicate MESSAGE= from log message
This was needed with log_struct_unit() but log_notice_unit() adds it
anyway. |
b1e2b33c5258f1cefcee55116ac5d049478c804d |
|
26-Apr-2013 |
Cristian RodrÃguez <crrodriguez@opensuse.org> |
Add some extra __attribute__ ((format)) s |
31afa0a44c2d7f93d837c840cdbd623982ac165f |
|
26-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: rework stop pending logic
When a trigger unit wants to know if a stop is queued for it, we should
just check precisely that and do not check whether it is actually
stopped already. This is because we use these checks usually from state
change calls where the state variables are not updated yet.
This change splits unit_pending_inactive() into two calls
unit_inactive_or_pending() and unit_stop_pending(). The former checks
state and pending jobs, the latter only pending jobs. |
78edb35ab4f4227485cb9ec816b43c37e0d5e62a |
|
25-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
cgroup: always validate cgroup controller names
Let's better be safe than sorry. |
3ecaa09bccd8a59c9f1e06756a1334a162206dc4 |
|
23-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: rework trigger dependency logic
Instead of having explicit type-specific callbacks that inform the
triggering unit when a triggered unit changes state, make this generic
so that state changes are forwarded betwee any triggered and triggering
unit.
Also, get rid of UnitRef references from automount, timer, path units,
to the units they trigger and rely exclsuively on UNIT_TRIGGER type
dendencies. |
ae018d9bc900d6355dea4af05119b49c67945184 |
|
23-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
cgroup: make sure all our cgroup objects have a suffix and are properly escaped
Session objects will now get the .session suffix, user objects the .user
suffix, nspawn containers the .nspawn suffix.
This also changes the user cgroups to be named after the numeric UID
rather than the username, since this allows us the parse these paths
standalone without requiring access to the cgroup file system.
This also changes the mapping of instanced units to cgroups. Instead of
mapping foo@bar.service to the cgroup path /user/foo@.service/bar we
will now map it to /user/foo@.service/foo@bar.service, in order to
ensure that all our objects are properly suffixed in the tree. |
c1b6628d64e5340d905d974bb95d673a4aae60c1 |
|
17-Apr-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: log a few more things under UNIT=... |
7a9ec5c9027d919839ab6e286ede753caa164241 |
|
15-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
core: let's make our log messages proper sentences with full stops |
b92bea5d2a9481de69bb627a7b442a9f58fca43d |
|
06-Apr-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Use initalization instead of explicit zeroing
Before, we would initialize many fields twice: first
by filling the structure with zeros, and then a second
time with the real values. We can let the compiler do
the job for us, avoiding one copy.
A downside of this patch is that text gets slightly
bigger. This is because all zero() calls are effectively
inlined:
$ size build/.libs/systemd
text data bss dec hex filename
before 897737 107300 2560 1007597 f5fed build/.libs/systemd
after 897873 107300 2560 1007733 f6075 build/.libs/systemd
… actually less than 1‰.
A few asserts that the parameter is not null had to be removed. I
don't think this changes much, because first, it is quite unlikely
for the assert to fail, and second, an immediate SEGV is almost as
good as an assert. |
2fa4092c2829dd14e50c430ae2f23551d23c6c1d |
|
04-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
util: make time formatting a bit smarter
Instead of outputting "5h 55s 50ms 3us" we'll now output "5h
55.050003s". Also, while outputting the accuracy is configurable.
Basically we now try use "dot notation" for all time values > 1min. For
>= 1s we use 's' as unit, otherwise for >= 1ms we use 'ms' as unit, and
finally 'us'.
This should give reasonably values in most cases. |
574d5f2dfc25226afc718aa5ba1a145fe5cad221 |
|
03-Apr-2013 |
Lennart Poettering <lennart@poettering.net> |
util: rename write_one_line_file() to write_string_file()
You can write much more than just one line with this call (and we
frequently do), so let's correct the naming. |
2875e22b65452896d5569eecb3a08265dd658173 |
|
02-Apr-2013 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
Replace s/Dropin/DropIn/ |
ae7a7182da31371555fceb2aed609e40a64b900a |
|
02-Apr-2013 |
Oleksii Shevchuk <alxchk@gmail.com> |
Introspect and monitor dropin configuration |
335b5240ae584ed184afc683519bf19d6e1e1145 |
|
23-Mar-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: never retroactively start requisites
Requesites are not supposed to be auto-started afterall, they are just
checks, so don't try to be smarter here than appropriate.
Based on a patch from Michal Schmidt. |
d91c34f21ff7445dcee3efe2368aebe2d6c266db |
|
22-Mar-2013 |
Lennart Poettering <lennart@poettering.net> |
exec: Assigning the empty string to CapabilityBoundSet= should drop all caps
Previously, it would set all caps, but it should drop them all, anything
else makes little sense.
Also, document that this works as it does, and what to do in order to
assign all caps to the bounding set.
https://bugzilla.redhat.com/show_bug.cgi?id=914705 |
814cc562121270e2d5de0630b773792c74990a9c |
|
13-Mar-2013 |
Michal Schmidt <mschmidt@redhat.com> |
core: single unit_kill implementation for all unit types
There are very few differences in the implementations of the kill method in the
unit types that have one. Let's unify them.
This does not yet unify unit_kill() with unit_kill_context(). |
6b19ad24d3b6ade48d9e3d29e5348fc6b8d7c811 |
|
02-Mar-2013 |
Michal Schmidt <mschmidt@redhat.com> |
unit: count deserialized job only after it's definitely installed
Installation of a deserialized job may fail (though purely in theory),
so increase the running job counter only when succeeding. |
9e9e2b722cf796b58e959cd174d87ce0ec0bc996 |
|
01-Mar-2013 |
Michal Schmidt <mschmidt@redhat.com> |
core: fix running jobs counters after reload/reexec
All active units will call unit_notify() during coldplug, so we just
make sure we're counting from zero again and get the correct result for
n_on_console.
For n_running_jobs we likewise reset it to zero and then count
the running jobs as we encounter them in deserialization. |
bf6dcfa6a79a459239799a21bdcba115d696a006 |
|
01-Mar-2013 |
Oleksii Shevchuk <alxchk@gmail.com> |
unit: fix the race in deserialization.
unit_notify is fired in deserelization code (particulary in
service_set_state). Units passed in random order, and there is possibility,
that unit with StopWhenUnneeded=yes passed before it actual dependecies. In
that case unit will be stopped as unneeded, because deps in UNIT_INACTIVE state
yet.
So, reuse similar logic (unit.c:1421) to avoid this race |
7ed9f6cd785634dd093e1b1550c3c6183177abf6 |
|
28-Feb-2013 |
Michal Schmidt <mschmidt@redhat.com> |
core: count active units that may mind our printing to /dev/console |
546ac4f0078228ef0bdd764dc7566cacf684c562 |
|
28-Feb-2013 |
Michal Schmidt <mschmidt@redhat.com> |
core/unit:Â use a temp variable for manager pointer in unit_notify() |
49b1d377263f33991a03235779e50f61273ba649 |
|
28-Feb-2013 |
Michal Schmidt <mschmidt@redhat.com> |
core:Â redefine unit_status_printf()
Take advantage of the fact that almost all callers want to pass unit
description as the last parameter. Those who don't can use the more
flexible manager_status_printf(). |
25cee55076a7c00c0a584731c2705686cc843210 |
|
28-Feb-2013 |
Michal Schmidt <mschmidt@redhat.com> |
core: add manager_status_printf()
unit_status_printf() checks the state of the manager, not of the unit
as such. Move it to manager.c and rename it to manager_status_printf().
Temporarily keep unit_status_printf as a wrapper macro. |
26d04f86a36595e3565c74d67863e076c3e3c773 |
|
27-Feb-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: rework resource management API
This introduces a new static list of known attributes and their special
semantics. This means that cgroup attribute values can now be
automatically translated from user to kernel notation for command line
set settings, too.
This also adds proper support for multi-line attributes. |
9d246da3c630559924a0262769c8493fa22c7acc |
|
16-Feb-2013 |
Michal Schmidt <mschmidt@redhat.com> |
unit: don't Require systemd-journald.socket from units
It is not really necessary to have a hard requirement dependency on
systemd-journald.socket in almost every unit. The socket gets pulled
into boot via at least two ways:
sockets.target -> systemd-journald.socket
sysinit.target -> systemd-journald.service -> systemd-journald.socket
So just assume something pulled the socket in and drop the automatic
requirement dependencies on it.
"systemctl stop systemd-journald.socket" will now not take the whole
system down with it. |
a5c32cff1f56afe6f0c6c70d91a88a7a8238b2d7 |
|
14-Feb-2013 |
Harald Hoyer <harald@redhat.com> |
honor SELinux labels, when creating and writing config files
Also split out some fileio functions to fileio.c and provide a SELinux
aware pendant in fileio-label.c
see https://bugzilla.redhat.com/show_bug.cgi?id=881577 |
cd2086fe6573df923dc53ef33998c9fff8c2bda5 |
|
26-Jan-2013 |
Lennart Poettering <lennart@poettering.net> |
core: unify kill code of mount, service, socket, swap units |
6d3a739048deab5c10a0debdad788e19898144cc |
|
19-Jan-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: fix typo |
71645acac27da55d510f2e4d61cc61b4e5b93035 |
|
19-Jan-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: optionally allow making cgroup attribute changes persistent |
e884315e3d28df0d5f4e7d4590730e9760b8f447 |
|
19-Jan-2013 |
Lennart Poettering <lennart@poettering.net> |
cgroup: additional validity checks for cgroup attribute names |
bbc9006e6b5665073149331d75c104a33224dc19 |
|
18-Jan-2013 |
Mirco Tischler <mt-ml@gmx.de> |
core: log USER_UNIT instead of UNIT if in user session |
8755586eba8b824851f11aa6c3f8f184ed69a30a |
|
17-Jan-2013 |
Nestor Ovroy <novroy@riseup.net> |
core: corrects check of strduped controller string
In commit 246aa6d (core: add bus API and systemctl commands for altering
cgroup parameters during runtime), when rewriting unit_add_one_default_cgroup
to prefered style, the check of strduped b->controller was incorrectly
changed to check the containing structure. Correct it. |
246aa6dd9dcea84bb945d16ec86e69f869dbb9b4 |
|
14-Jan-2013 |
Lennart Poettering <lennart@poettering.net> |
core: add bus API and systemctl commands for altering cgroup parameters during runtime |
8afbb8e1180dce3cb33a14fc3ec5afcf501104e6 |
|
11-Jan-2013 |
Lennart Poettering <lennart@poettering.net> |
unit: allow extension of unit files with .d/*.conf drop-ins
For all unit files foobar.service we will now read
foobar.service.d/*.conf, too. This may be used to override certain unit
settings without having to edit unit files directly.
This makes it really easy to change specific settings for services
without having to edit any unit file:
mkdir /etc/systemd/system/avahi-daemon.service.d/
echo -e '[Service]\nNice=99' > /etc/systemd/system/avahi-daemon.service.d/nice.conf
systemctl daemon-reload |
36697dc0199e25f09b78090fcf5f1cf8a3648ffd |
|
23-Nov-2012 |
Lennart Poettering <lennart@poettering.net> |
timer: implement calendar time events |
68b29a9fca915c83b9192790ec61189430cd5de6 |
|
22-Nov-2012 |
Lennart Poettering <lennart@poettering.net> |
manager: introduce watch_init() initializer for watches |
23635a8547eac0c05922609f5930badc86faf080 |
|
18-Oct-2012 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
systemd: use structured logging for unit changes
Information which unit a log entry pertains to enables systemctl
status to display more log messages. |
1ca6783f5ea3755bd83e723f529c2eda512c7fed |
|
13-Oct-2012 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
log: introduce a macro to format message id
The MESSAGE_ID=... stanza will appear in countless number of places.
It is just too long to write it out in full each time.
Incidentally, this also fixes a typo of MESSSAGE is three places. |
67445f4e22ad924394acdd4fd49e6f238244a5ca |
|
18-Sep-2012 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
core: move ManagerRunningAs to shared
Note: I did s/MANAGER/SYSTEMD/ everywhere, even though it makes the
patch quite verbose. Nevertheless, keeping MANAGER prefix in some
places, and SYSTEMD prefix in others would just lead to confusion down
the road. Better to rip off the band-aid now. |
3ef63c317481c2b3f1fe39e1b0f130aac3544522 |
|
18-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
unit-printf: before resolving exec context specifiers check whether the object actually has an exec context |
41f9172f427bdbb8221c64029f78364b8dd4e527 |
|
18-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: split unit_printf() and friends into its own .c file |
99006251161aee07b6a099e3186b4360be66eeaa |
|
18-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: fix %f resolving |
faa368e3376cb5e3e3c27550fdde652f1d3c9584 |
|
17-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
conf-parser: don't unescape parsed configuration strings by default
In many cases this might have a negative effect since we drop escaping
from strings where we better shouldn't have dropped it.
If unescaping makes sense for some settings we can readd it later again,
on a per-case basis.
https://bugs.freedesktop.org/show_bug.cgi?id=54522 |
c53158818d8cdaf46b3f1b5299b9bda118a1043f |
|
13-Sep-2012 |
Thomas Hindoe Paaboel Andersen <phomes@gmail.com> |
man: fix a bunch of typos in docs
https://bugs.freedesktop.org/show_bug.cgi?id=54501 |
9d576438a1ee932bde1fb0f1be1aa5cae646fd4e |
|
10-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: don't allow units to be gc'ed that still are referenced via UnitRef |
81270860a5b8c6794f0c7bac8becfdd0c41a9385 |
|
04-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
journal: suppress structured messages if they'd go to the console |
877d54e9b09e093c2102f519a84e2a52637ae035 |
|
04-Sep-2012 |
Lennart Poettering <lennart@poettering.net> |
journal: generate structured journal messages for a number of events |
ac6a4abed3e69daf6795e02fa4be1719ae6ae6ab |
|
26-Jul-2012 |
Michal Schmidt <mschmidt@redhat.com> |
unit: add missing deps in unit_dependency_table
also reorder the table according to the enum order. |
60649f17bd5ef8659dab474ace8bf42ee23ffca3 |
|
26-Jul-2012 |
Michal Schmidt <mschmidt@redhat.com> |
unit: make the table of inverse deps symmetric |
85e9a1010d16064ce435b84f02dc585bc645aade |
|
26-Jul-2012 |
Michal Sekletar <msekleta@redhat.com> |
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. |
cba6e0627d659a33df31aaa74d0d701c4bc9f317 |
|
20-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
units: apply default resource limits to socket/mount/swap processes too |
c74f17d96cccd4cc998fd037cb92046930188c91 |
|
20-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
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. |
6b78f9b4354010f8af2fe48c783ffd52b2db8f57 |
|
18-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: don't serialize job state, only unit state across switch-root |
e06c73cc91e02a1a3dffdb0976fef754f1109e74 |
|
16-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: set default working directory to the user's home directory when running in user mode |
d05c5031ad4c528fe6bbfed289519edb9f13180a |
|
16-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: introduce %s specifier for the user shell |
b2896c905bef7be7ed9a760d9d61aa6ad0f614a3 |
|
16-Jul-2012 |
Auke Kok <auke-jan.h.kok@intel.com> |
unit: printf specifiers %u and %h: $USER and $HOME.
These printf specifiers allow us to refer to $HOME and $USER
in unit files. These are particularly helpful in instanced
units that have "User=" set, and in systemd --user domains.
The specifiers will return the pw_name and pw_dir fields
if the unit file has a User= field.
If the unit file does not have a User= field, the value
substituted is either $USER or $HOME from the environment,
or, if unset, the values from pw_name or pw_dir.
This patch is somewhat after Ran Benita's original patch,
which didn't get merged. I've split up the 2 specifiers
and extended them to do what is logically expected from
these specifiers.
Note that expansion is done at `start` time, not after
the units are parsed. Using `systemctl show` will just
show the specifiers. |
7f2cddae09fd2579ae24434df577bb5e5a157d86 |
|
13-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: rename BindTo= to BindsTo=
all other dependencies are in 3rd person. Change BindTo= accordingly to
BindsTo=.
Of course, the dependency is widely used, hence we parse the old name
too for compatibility. |
b7def684941808600c344f0be7a2b9fcdda97e0f |
|
13-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
util: rename join() to strjoin()
This is to match strappend() and the other string related functions. |
f69614f811b133ececad4394e88f9549a017bd4e |
|
10-Jul-2012 |
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> |
unit: Move UnitLoadState definitions from core/unit.c to shared/unit-name.c
This makes it possible to use them from systemctl without linking
against the core. |
5f73969991fa765f2826975c0fc5e47438b5e9ea |
|
10-Jul-2012 |
Lennart Poettering <lennart@poettering.net> |
unit-name: remove unit_name_is_valid_no_type() and move unit_name_is_valid() to unit-name.h |
35eb6b124ebdf82bd77aad6e44962a9a039c4d33 |
|
25-Jun-2012 |
Lennart Poettering <lennart@poettering.net> |
cryptsetup: fix escaping when generating cryptsetup units |
48899192a7b28b6a338cc8ec18aa35ccd8867acb |
|
13-Jun-2012 |
Michal Schmidt <mschmidt@redhat.com> |
unit-name: introduce unit_dbus_path_from_name()
Use the same function in core and in systemctl.
get_unit_path() in systemctl becomes unnecessary. |
1b64d026af01277e332d10d9e67e2eed5a4ded28 |
|
22-May-2012 |
Lennart Poettering <lennart@poettering.net> |
units: remove service sysv_path variable and replace it by generic unit_path
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. |
49dbfa7b2b0bf3906704dac1eaeb4eba91056a19 |
|
21-May-2012 |
Lennart Poettering <lennart@poettering.net> |
units: introduce new Documentation= field and make use of it everywhere
This should help making the boot process a bit easier to explore and
understand for the administrator. The simple idea is that "systemctl
status" now shows a link to documentation alongside the other status and
decriptionary information of a service.
This patch adds the necessary fields to all our shipped units if we have
proper documentation for them. |
c69182961b00707d977957cf81d5c41cfbeab429 |
|
14-May-2012 |
Michal Schmidt <mschmidt@redhat.com> |
unit: unit type dependent status messages
Instead of generic "Starting..." and "Started" messages for all unit use
type-dependent messages. For example, mounts will announce "Mounting..."
and "Mounted".
Add status messages to units of types that used to be entirely silent
(automounts, sockets, targets, devices). For unit types whose jobs are
instantaneous, report only the job completion, not the starting event.
Socket units with non-instantaneous jobs are rare (Exec*= is not used
often in socket units), so I chose not to print the starting messages
for them either.
This will hopefully give people better understanding of the boot. |
9ab7a8d2a30f440c008d127113419030e4572cb4 |
|
14-May-2012 |
Michal Schmidt <mschmidt@redhat.com> |
unit: print the color status marks on the left
The alignment of the "[ OK ]" and "[FAILED]" status marks to the right
side of the terminal makes it difficult to link them with the messages
on the left if your console is wide.
I considered the options:
1. Align them to the 80th column regardless of the console width.
Disadvantage - either:
- truncating messages needlessly, not using available space; or
- If the message is long, write the mark over it. => ugly
2. Write them to the 80th column for short messages,
and further to the right for longer ones.
Disadvantage:
- jagged look
3. Write the marks on the left, before the message.
Disadvantage:
- Breaks tradition from RHL.
Advantages:
+ slightly simpler code
+ Will annoy holy-traditionalists.
I chose option 3.
BTW, Debian now uses similar marks on the left with its makefile-style
boot.
Special values of the "status" argument to status_vprintf are:
NULL - no status mark, no message indentation
"" - no status mark, message indented as if the mark was there |
9eb977db5b89b44f254ab40c1876a76b7d7ea2d0 |
|
08-May-2012 |
Kay Sievers <kay@vrfy.org> |
util: split-out path-util.[ch] |
7c8fa05c4d5d01748ff2a04edb882afb3119b7d7 |
|
30-Apr-2012 |
Lennart Poettering <lennart@poettering.net> |
unit: add new dependency type RequiresMountsFor=
RequiresMountsFor= is a shortcut for adding requires and after
dependencies to all mount units neeed for the specified paths.
This solves a couple of issues regarding dep loop cycles for encrypted
swap. |
e0209d83e7b30153f43b1a633c955f66eb2c2e4a |
|
25-Apr-2012 |
Michal Schmidt <mschmidt@redhat.com> |
core: add NOP jobs, job type collapsing
Two of our current job types are special:
JOB_TRY_RESTART, JOB_RELOAD_OR_START.
They differ from other job types by being sensitive to the unit active state.
They perform some action when the unit is active and some other action
otherwise. This raises a question: when exactly should the unit state be
checked to make the decision?
Currently the unit state is checked when the job becomes runnable. It's more
sensible to check the state immediately when the job is added by the user.
When the user types "systemctl try-restart foo.service", he really intends
to restart the service if it's running right now. If it isn't running right
now, the restart is pointless.
Consider the example (from Bugzilla[1]):
sleep.service takes some time to start.
hello.service has After=sleep.service.
Both services get started. Two jobs will appear:
hello.service/start waiting
sleep.service/start running
Then someone runs "systemctl try-restart hello.service".
Currently the try-restart operation will block and wait for
sleep.service/start to complete.
The correct result is to complete the try-restart operation immediately
with success, because hello.service is not running. The two original
jobs must not be disturbed by this.
To fix this we introduce two new concepts:
- a new job type: JOB_NOP
A JOB_NOP job does not do anything to the unit. It does not pull in any
dependencies. It is always immediately runnable. When installed to a unit,
it sits in a special slot (u->nop_job) where it never conflicts with
the installed job (u->job) of a different type. It never merges with jobs
of other types, but it can merge into an already installed JOB_NOP job.
- "collapsing" of job types
When a job of one of the two special types is added, the state of the unit
is checked immediately and the job type changes:
JOB_TRY_RESTART -> JOB_RESTART or JOB_NOP
JOB_RELOAD_OR_START -> JOB_RELOAD or JOB_START
Should a job type JOB_RELOAD_OR_START appear later during job merging, it
collapses immediately afterwards.
Collapsing actually makes some things simpler, because there are now fewer
job types that are allowed in the transaction.
[1] Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=753586 |
5273510e9f228a300ec6207d4502f1c6253aed5e |
|
23-Apr-2012 |
Michal Schmidt <mschmidt@redhat.com> |
transaction: cancel jobs non-recursively on isolate
Recursive cancellation of jobs would trigger OnFailure actions of
dependent jobs. This is not desirable when isolating.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=798328 |
39a18c60d07319ebfcfd476556729c2cadd616d6 |
|
24-Apr-2012 |
Michal Schmidt <mschmidt@redhat.com> |
job: serialize jobs properly
Jobs were not preserved correctly over a daemon-reload operation.
A systemctl process waiting for a job completion received a job removal
signal. The job itself changed its id. The job timeout started ticking all
over again.
This fixes the deficiencies. |
97e7d748d1bf26790fc3b2607885f4ac8c4ecf3a |
|
20-Apr-2012 |
Michal Schmidt <mschmidt@redhat.com> |
job: job_uninstall()
Split the uninstallation of the job from job_free() into a separate function.
Adjust the callers.
job_free() now only works on unlinked and uninstalled jobs. This enforces clear
thinking about job lifetimes. |
5430f7f2bc7330f3088b894166bf3524a067e3d8 |
|
12-Apr-2012 |
Lennart Poettering <lennart@poettering.net> |
relicense to LGPLv2.1 (with exceptions)
We finally got the OK from all contributors with non-trivial commits to
relicense systemd from GPL2+ to LGPL2.1+.
Some udev bits continue to be GPL2+ for now, but we are looking into
relicensing them too, to allow free copy/paste of all code within
systemd.
The bits that used to be MIT continue to be MIT.
The big benefit of the relicensing is that closed source code may now
link against libsystemd-login.so and friends. |
b30e2f4c18ad81b04e4314fd191a5d458553773c |
|
11-Apr-2012 |
Kay Sievers <kay@vrfy.org> |
move libsystemd_core.la sources into core/ |