Commit graph

20511 commits

Author SHA1 Message Date
Tom Gundersen 62f908b53c udevd: hook up watchdog support
We are already sending watchdog notification, this tells PID1 to actually listen for
them and restart udevd in case it gets stuck.
2015-05-29 18:52:13 +02:00
Tom Gundersen b79aacbff6 udevd: notify - expose a bit more of the internal state
This notifies PID1 about config being flushed, about shutdown starting and shutdown finalizing.
2015-05-29 18:52:13 +02:00
Tom Gundersen 39fd2ca161 udevd: notify - keep NOTIFY_SOCKET around
Only unset the env var in the workers, but otherwise keep it around in the main daemon.
2015-05-29 18:52:13 +02:00
Tom Gundersen 3cbb20578b udevd: modernize status notification
Only log about starting in daemon mode, rely on PID1 to log this in notify mode. Also
explicitly set the STATUS variable, as is done in notify mode as is done for other
serivecs.
2015-05-29 18:52:13 +02:00
Tom Gundersen 8128f2297d udevd: event - port spawn_wait() to sd-event
This allows us to drop the special sigterm handling in spawn_wait()
as this will now be passed directly to the worker event loop.

We now log failing spawend processes at 'warning' level, and timeouts
are in terms of CLOCK_BOOTTIME when available, otherwise the behavior
is unchanged.
2015-05-29 18:52:13 +02:00
Tom Gundersen 693d371d30 udevd: move main-loop to sd-event 2015-05-29 18:52:13 +02:00
Tom Gundersen 8302fe5a13 udevd: explicitly try to start event queue when it may be possible
Rather than trying to schedule new events on every main-loop iteration, do it explicitly when
processing an event finishes, a worker is killed, a new uevent is received, or the event queue
is explicitly restarted.
2015-05-29 18:52:13 +02:00
Tom Gundersen 7c4c7e8913 udevd: only check for changed config before scheduling new events
Also move builtin and rules initialization from main loop to
event_queue_start().

No functional change.
2015-05-29 18:52:13 +02:00
Tom Gundersen 62d43dac79 udevd: introduce manager_exit() and manager_reload()
The behavior is mostly unchanged, but rather than only ever calling these functions at
fixed points in the event loop, they are called directly whenever they are invoked.
2015-05-29 18:52:13 +02:00
Martin Pitt e26d6ce517 path-util: Change path_is_mount_point() symlink arg from bool to flags
This makes path_is_mount_point() consistent with fd_is_mount_point() wrt.
flags.
2015-05-29 17:42:44 +02:00
Martin Pitt 5d40903401 path-util: Fix path_is_mount_point for files
Commits 27cc6f166 and f25afeb broke path_is_mount_point() for files (such as
/etc/machine-id → /run/machine-id bind mounts) as with the factorization of
fd_is_mount_point() we lost the parent directory. We cannot determine that from
an fd only as openat(fd, "..") only works for directory fds.

Change fd_is_mount_point() to behave like openat(): It now takes a file
descriptor of the containing directory, a file name in it, and flags (which can
be 0 or AT_SYMLINK_FOLLOW). Unlike name_to_handle_at() or openat(), fstatat()
only accepts the inverse flag AT_SYMLINK_NOFOLLOW and complains with EINVAL
about AT_SYMLINK_FOLLOW; so we need to transform the flags for that fallback.

Adjust rm_rf_children() accordingly (only other caller of fd_is_mount_point()
aside from path_is_mount_point()).

Add test cases for files, links, and file bind mounts (the latter will only
work when running as root). Split out a new test_path_is_mount_point() test
case function as it got significantly larger now.
2015-05-29 17:40:12 +02:00
Eric Cook d34b7c117b zsh-completion: a more style/tag aware _systemctl
using _wanted instead of calling compadd directly. this allows the user to customize
possible matches.

An example being, grouping units by type:
autoload -Uz compinit; compinit
zstyle ':completion:*' menu select
zstyle ':completion:*' group-name ''
zstyle ':completion:*' format 'Completing %d'
zstyle -e ':completion:*:*:systemctl-(((re|)en|dis)able|(*re|)start|reload*):*' \
tag-order 'local type; for type in service template target socket;
    reply+=( systemd-units:-${type}:${type} ); reply=( "$reply systemd-units:-misc:misc" )'
zstyle ':completion:*:systemd-units-template' ignored-patterns '^*@'
zstyle ':completion:*:systemd-units-target' ignored-patterns '^*.target'
zstyle ':completion:*:systemd-units-socket' ignored-patterns '^*.socket'
zstyle ':completion:*:systemd-units-service' ignored-patterns '^*.service'
zstyle ':completion:*:systemd-units-misc' ignored-patterns '*(@|.(service|socket|target))'

also, <poke> http://lists.freedesktop.org/archives/systemd-devel/2015-May/032012.html
2015-05-29 17:04:09 +02:00
Martin Pitt 2fe9e87a24 build-sys: pass originally configured --enable-split-usr to distcheck
Previously we always ran distcheck with --disable-split-usr. This caused
test-path-util to fail with

  Assertion 'fsck_exists("minix") == 0' failed at ../src/test/test-path-util.c:224, function test_fsck_exists(). Aborting.

as looking up fsck.minix would only look into DEFAULT_PATH_NORMAL, but on these
systems fsck is in /sbin/.
2015-05-29 16:40:41 +02:00
Karel Zak 144b1b4b34 build-sys: fix typo
There is nothing like systemd_verify_* in Makefile.am. The bug has
been invisible because automake uses the default CFLAGS when component
CFLAGS are undefined.
2015-05-29 13:55:02 +02:00
Martin Pitt e37f6d6134 build-sys: Stop depending on current configure options for EXTRA_DIST
Consistently move EXTRA_DIST out of conditional blocks. This would have
produced incomplete dist tarballs when being run in a built tree with not
every feature enabled, which can cause broken dist tarballs.
2015-05-29 12:21:44 +02:00
Daniel Mack 6096d9ccc3 Makefile: make custom-entities.ent depend on Makefile.am
When Makefile.am is modified, make sure custom-entities.ent is rebuilt.
After all, $(substitutions) is defined there, so changes of that variable
must be reflected in the resulting file.
2015-05-29 12:00:58 +02:00
Martin Pitt 355ff44900 systemctl: Don't skip SysV init.d scripts when enabling/disabling units
If there is both a SysV init.d script and a systemd unit for a given name, we
want to do the same enable/disable operation for both, instead of just on the
systemd unit. This keeps the enablement status in sync so that switching init
systems behaves as expected.
2015-05-28 19:42:45 +02:00
Martin Pitt 0f0467e63b systemctl: drop hardcoded chkconfig invocation
Introduce /usr/lib/systemd/systemd-sysv-install [--root=] <action> <name>
abstraction, replacing the direct calling of chkconfig. This allows
distributions to call their specific tools like update-rc.d without patching
systemd.

Ship systemd-sysv-install.SKELETON as an example for packagers how to implement
this.

Drop the --enable-chkconfig configure option.

Document this in README and point to it in NEWS.
2015-05-28 19:42:45 +02:00
Filipe Brandenburger d31dd62ba2 man: use configured path for mount and umount binaries in manpages
Export the MOUNT_PATH and UMOUNT_PATH variables as XML entities and use them in
the systemctl.1 manpage instead of hardcoding the path in /usr/bin.

Tested:
- Ran ./configure ac_cv_path_MOUNT_PATH=/bin/mount (same for umount) and
  rebuilt the manpages, confirmed that the correct path was in man/systemctl.1
- Rebuilt man/systemd.directives.xml and the man pages derived from it,
  confirmed that the correct paths were there as well.
2015-05-28 19:28:23 +02:00
Filipe Brandenburger 681eb9cf2b man: generate configured paths in manpages
In particular, use /lib/systemd instead of /usr/lib/systemd in distributions
like Debian which still have not adopted a /usr merge setup.

Use XML entities from man/custom-entities.ent to replace configured paths while
doing XSLT processing of the original XML files. There was precedent of some
files (such as systemd.generator.xml) which were already using this approach.

This addresses most of the (manual) fixes from this patch:
http://anonscm.debian.org/cgit/pkg-systemd/systemd.git/tree/debian/patches/Fix-paths-in-man-pages.patch?h=experimental-220

The idea of using generic XML entities was presented here:
http://lists.freedesktop.org/archives/systemd-devel/2015-May/032240.html

This patch solves almost all the issues, with the exception of:
- Path to /bin/mount and /bin/umount.
- Generic statements about preference of /lib over /etc.

These will be handled separately by follow up patches.

Tested:
- With default configure settings, ran "make install" to two separate
  directories and compared the output to confirm they matched exactly.
- Used a set of configure flags including $CONFFLAGS from Debian:
  http://anonscm.debian.org/cgit/pkg-systemd/systemd.git/tree/debian/rules
  Installed the tree and confirmed the paths use /lib/systemd instead of
  /usr/lib/systemd and that no other unexpected differences exist.
- Confirmed that `make distcheck` still passes.
2015-05-28 19:28:19 +02:00
Tom Gundersen 5f529f4c97 sd-device: enumerator - fix matching on properties and sysattrs
This was a regression that broke

  $ udevadm trigger -nv --property-match=DEVNAME=/dev/sda1 --attr-match=size=409600

Reported by David Reisner.
2015-05-28 17:35:46 +02:00
Patrick Donnelly c4e87748d5 man: fix systemd.resource-control(5) volume number 2015-05-27 23:37:19 +02:00
Jonathan Boulle d250afe73d fix extraneous space in equality check 2015-05-27 23:36:29 +02:00
Tom Gundersen 0e3e605613 sd-device: fix device_get_properties_strv()
A NULL pointer was inserted as the first element of the strv.

This had the effect of always passing the empty environment to processes
spawned by udev.

Reported by Michał Bartoszkiewicz.
2015-05-27 23:30:02 +02:00
Tom Gundersen 86c3bece38 udevd: fix SIGCHLD handling in --daemon mode
We were listening for SIGCHLD in the wrong process.
2015-05-27 18:44:02 +02:00
Michael Olbrich 583c14fc04 missing: add more IFLA_VXLAN_* defines
Otherwise building faild with kernel headers < v3.16
2015-05-27 15:57:28 +02:00
Daniel Mack a790812cb3 logind: prefix some calls to unlink with (void)
Make Coverity happy and tell it we're not interested in the return
value of these two calls.
2015-05-27 15:20:58 +02:00
Daniel Mack fb91034cf5 logind: unlink /run/nologin when shutdown is cancelled
When a scheduled is cancelled, make sure to remove /run/nologin.
This is a regression from the recent shutdownd removal and logind rework.
2015-05-27 13:45:31 +02:00
Torstein Husebø 45afd51974 treewide: fix typos 2015-05-26 19:55:51 +02:00
David Herrmann 185abfc3d6 udev: fix inotify handling
This partly reverts:

    commit 6d1b1e0bc6
    Author: Tom Gundersen <teg@jklm.no>
    Date:   Sun May 24 15:10:04 2015 +0200

        udevd: worker - fully clean up unnecessary fds

The inotify-fd _is_ used in the workers, so don't close it! Have a look at
udev-watch.c, which keeps track of the inotify-fd as a global variable
(ugh!).
2015-05-26 13:03:15 +02:00
Michael Olbrich 7ce38a6b00 missing: add more IFLA_VXLAN_* defines
Otherwise building faild with kernel headers < v3.16
2015-05-26 08:06:00 +02:00
Martin Pitt db47294f41 build-sys: ship fsck mock in tarball
Useful for downstream integration test cases.
2015-05-26 07:16:00 +02:00
Tom Gundersen e136009df2 test: hostname - test that hostname is truly initialized
Fixes CID CID 1299638 (use after free).
2015-05-25 23:10:26 +02:00
Tom Gundersen cc9fce6554 nspawn: fix memleak
This was a typo, swapping prefix_root() in place of prefix_roota().

Fixes CID 1299640.
2015-05-25 23:01:50 +02:00
Tom Gundersen 2371271c2a nspawn: avoid memleak
Simplify the code a bit, at the cost of potentially duplicating some
memory unneccessarily.

Fixes CID 1299641.
2015-05-25 22:58:26 +02:00
Tom Gundersen 4b53a9d21b nspawn: drop some debugging code
These have no effect.

Fixes CID 1299643.
2015-05-25 22:49:14 +02:00
Tom Gundersen 37591152d2 import: dkr - avoid NULL-pointer dereference
A malformed manifest could in principle cause a NULL pointer dereference of. Check
for this and fail early.

Fixes CID 1299642.
2015-05-25 22:47:42 +02:00
Tom Gundersen f001a83522 nspawn: make coverity happy
Rather than checking the return of asprintf() we are checking if buf gets allocated,
make it clear that it is ok to ignore the return value.

Fixes CID 1299644.
2015-05-25 22:27:29 +02:00
Tom Gundersen 01d28f81a7 networkd: fix IFF_UP when ipv6 support is disabled
Passing ipv6 options (even when they should be noops) caused IFF_UP to fail when
ipv6 was supported.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90103
2015-05-25 17:41:42 +02:00
Karel Zak bf1d7ba70a swap: use swapon -o
This patch simplify swapon usage in systemd. The command swapon(8)
since util-linux v2.26 supports "-o <list>". The idea is exactly the
same like for mount(8). The -o specifies options in fstab-compatible
way. For systemd it means that it does not have to care about things
like "discard" or another swapon specific options.

        swapon -o <options-from-fstab>

For backward compatibility the code cares about "Priority:" swap unit
field (for a case when Priority: is set, but pri= in the Options: is
missing).

References: http://lists.freedesktop.org/archives/systemd-devel/2014-October/023576.html
2015-05-25 17:06:15 +02:00
Marc-Antoine Perennou 49f582c0a0 build-sys: fix headers installation 2015-05-25 17:04:43 +02:00
Marc-Antoine Perennou ee3c31bf69 build-sys: don't dist generated files
[tomegun: fix
   Makefile.am:5675: warning: nodist_systemd_resolved_SOURCES multiply defined in condition ENABLE_RESOLVED]
2015-05-25 17:03:30 +02:00
Marc-Antoine Perennou f80099c06f build-sys: always include src/boot/efi in tarballs
currently it would only be included if configure was ran with --enable-gnuefi
2015-05-25 16:56:29 +02:00
Mike Gilbert 77eb82f9f0 shared: generator - correct path to systemd-fsck
In generated systemd-fsck-root.service. This would break if rootprefix
is not /usr/lib/systemd.

[tomegun: flesh out commit message]
2015-05-24 22:44:29 +02:00
Umut Tezduyar Lindskog 637aa8a36c nspawn: be verbose about interface names
Allowed interface name is relatively small. Lets not make
users go in to the source code to figure out what happened.

--machine=debian-tree conflicts with
--machine=debian-tree2

ex: Failed to add new veth \
         interfaces (host0, vb-debian-tree): File exists
2015-05-24 22:39:09 +02:00
Tom Gundersen 040e689654 udevd: event - fix event queue in daemenozied mode
We would enforce that events could only be added to the queue from the
main process, but that brake in daemonized mode. Relax the restriction
to only allow one process to add events to the queue.

Reported by Mantas Mikulėnas.
2015-05-24 15:29:48 +02:00
Tom Gundersen 2dd9f98d2d udevd: worker - modernize a bit
Initialize structs when declaring rather than using memzero().
2015-05-24 15:29:48 +02:00
Tom Gundersen 6d1b1e0bc6 udevd: worker - fully clean up unnecessary fds
These are only ever used in the parent process, so close them early in the worker.
2015-05-24 15:29:48 +02:00
Thomas Hindoe Paaboel Andersen dd114e116b bootctl: fix an error check 2015-05-23 13:03:30 +02:00
Jonathan Boulle 7c918141ed fix typos in systemd-nspawn man page 2015-05-23 10:41:00 +02:00