Lennart Poettering [Mon, 14 Jun 2021 20:41:58 +0000 (22:41 +0200)]
test: add simple test for import-util
Lennart Poettering [Tue, 2 Feb 2021 21:37:36 +0000 (22:37 +0100)]
import-util: tweak url patching helper
let's share some code between import_url_last_component() and
import_url_change_last_component(), and make sure we never eat up the
hostname component of the URL when parsing out the last component.
Let's also make import_url_change_last_component() more generic so that
we can also use it for append components to paths, instead of replacing
suffixes.
Lennart Poettering [Tue, 26 Jan 2021 15:30:06 +0000 (16:30 +0100)]
rm-rf: refactor rm_rf_children(), split out body of directory iteration loop
This splits out rm_rf_children_inner() as body of the loop. We can use
that to implement rm_rf_child() for deleting one specific entry in a
directory.
Luca Boccassi [Fri, 30 Jul 2021 10:38:13 +0000 (11:38 +0100)]
Merge pull request #20348 from poettering/free-and-replace-double-eval
make free_and_replace() double eval free
Frantisek Sumsal [Thu, 29 Jul 2021 16:44:51 +0000 (18:44 +0200)]
test: correctly detect ASan on s390x
s390x uses BRAS(L) instead of CALL(Q), e.g.:
```
1009528: c0 e5 ff ff f8 a0 brasl %r14,
1008668 <__asan_report_load1@plt>
10095f0: c0 e5 ff ff ea ec brasl %r14,
1006bc8 <__asan_stack_malloc_4@plt>
10097f8: c0 e5 ff ff f8 f8 brasl %r14,
10089e8 <__asan_report_load8@plt>
```
x86_64 for reference:
```
4011f3: e8 48 fe ff ff callq 401040 <__asan_report_load1@plt>
401227: e8 24 fe ff ff callq 401050 <__asan_report_load8@plt>
401251: e8 da fd ff ff callq 401030 <__asan_init@plt>
```
Lennart Poettering [Thu, 29 Jul 2021 15:22:03 +0000 (17:22 +0200)]
main: fix type confusion in do_reexecute()
Let's use size_t for stuff we count in memory. This doesn't matter much,
but is certainly more correct and less eyebrow-raising.
Follow-up for:
846f1da465beda990c1c01346311393f485df467
See: https://github.com/systemd/systemd/pull/20273#discussion_r679250180
Lennart Poettering [Thu, 29 Jul 2021 19:13:03 +0000 (21:13 +0200)]
xdg-autostart-service: rely on the new double-eval-free free_and_replace()
These semi-reverts
2744c7bb0176dc6b86a69acd4c449ea9e269e097
Lennart Poettering [Thu, 29 Jul 2021 19:05:38 +0000 (21:05 +0200)]
alloc-util: drop double eval from free_and_replace()
Inspired by:
2744c7bb0176dc6b86a69acd4c449ea9e269e097
Frantisek Sumsal [Thu, 29 Jul 2021 10:46:06 +0000 (12:46 +0200)]
meson: add the versiondep to the static lib deplist as well
Follow-up to
99c645b81aa47899ae3e0f920947a7d86cca5a86.
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jul 2021 10:57:10 +0000 (12:57 +0200)]
systemctl: allow set-property to be called with a glob pattern
We call "systemctl set-property … Markers=+needs-restart" and this should
also work for globs, e.g. "user@*.service" or "syncthing@*.service".
https://bugzilla.redhat.com/show_bug.cgi?id=
1986258
Lennart Poettering [Thu, 29 Jul 2021 08:47:10 +0000 (10:47 +0200)]
Merge pull request #20337 from poettering/oom-adj-fix
make oom_score_adjust_is_valid() shared again
Lennart Poettering [Thu, 29 Jul 2021 08:46:50 +0000 (10:46 +0200)]
Merge pull request #20339 from poettering/bus-vtable-indent-fix
sd-bus: fix indentation in macros
Lennart Poettering [Wed, 28 Jul 2021 18:44:49 +0000 (20:44 +0200)]
sd-bus: add brief inline comment explaining the "reserved" field in the bus vtable structure
Follow-up for: #20253
Lennart Poettering [Wed, 28 Jul 2021 18:38:31 +0000 (20:38 +0200)]
sd-bus: fix indentation in macros
We use multiples of 8 spaces indentation in our C code, do it here too.
Franck Bui [Fri, 23 Jul 2021 09:12:03 +0000 (11:12 +0200)]
manager: reexecute on SIGRTMIN+25, user instances only
Before this patch, there was no way to request all running user instances for
reexecuting. However this can be useful especially during package updates
otherwise user instances are never updated and keep running a potentially very
old version of the binaries.
Now assuming that we have enough priviledge, it's possible to request
reexecution of all user instances:
systemctl kill --signal=SIGRTMIN+25 "user@*.service"
Note that this request is obviously asynchronous as it relies on a
signal. Keeping "systemctl kill" as the only interface should be good enough to
make this obvious and that's the reason why another interface, such as
"systemctl --global daemon-reexec" has not been considered.
PID1 already uses SIGTERM for reexecuting hence sending it SIGRTMIN+25 is a
nop.
Lennart Poettering [Wed, 28 Jul 2021 16:23:50 +0000 (18:23 +0200)]
parse-util: use oom_score_adjust_is_valid() at one more place
Lennart Poettering [Wed, 28 Jul 2021 16:22:00 +0000 (18:22 +0200)]
Revert "Make oom_score_adjust_is_valid() static"
This reverts commit
6bf3c6c9007ca87376d5dff1e029186a38736cdc.
Lennart Poettering [Wed, 28 Jul 2021 16:20:46 +0000 (18:20 +0200)]
update TODO
Yegor Alexeyev [Sun, 25 Jul 2021 12:08:41 +0000 (15:08 +0300)]
added missing handling of button release events
Yao Wei [Tue, 27 Jul 2021 06:05:28 +0000 (14:05 +0800)]
Use SKU to identify Dell clamshell models for accelerometer properties
As per request from Dell, we need to use sku property of modalias that
is patched into linux 5.13 for model identification:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=
e26f023e01ef26b4138bc1099af309bdc4523d23
Luca Boccassi [Wed, 28 Jul 2021 12:30:37 +0000 (13:30 +0100)]
Merge pull request #20326 from keszybz/meson-0.53.2
Use some more new meson features
Luca Boccassi [Wed, 28 Jul 2021 11:37:39 +0000 (12:37 +0100)]
Merge pull request #20311 from keszybz/manpage-l10n-report
Man pages cleanups
Frantisek Sumsal [Wed, 28 Jul 2021 08:26:29 +0000 (10:26 +0200)]
ci: bump meson version in LGTM
Otherwise LGTM fails to detect the build system:
```
[2021-07-27 23:18:47] [build-stdout] The Meson build system
[2021-07-27 23:18:47] [build-stdout] Version: 0.51.2
[2021-07-27 23:18:47] [build-stdout] Source dir: /opt/src
[2021-07-27 23:18:47] [build-stdout] Build dir: /opt/src/_lgtm_build_dir
[2021-07-27 23:18:47] [build-stdout] Build type: native build
[2021-07-27 23:18:47] [build-stdout] meson.build:3:0: ERROR: Meson version is 0.51.2 but project requires >= 0.53.2
[2021-07-27 23:18:47] [build-stdout] A full log can be found at /opt/src/_lgtm_build_dir/meson-logs/meson-log.txt
```
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:42:09 +0000 (09:42 +0200)]
man/systemctl: rework descriptions of bind and mount-image
The text used "unit's view" to mean mount namespace. But we talk about
mount namespaces in the later part of the paragraph anyway, so trying to
use an "approachable term" only makes the whole thing harder to understand.
Let's use the precise term.
Some paragraph-breaking and re-indentation is done too.
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jul 2021 08:04:01 +0000 (10:04 +0200)]
meson: use meson's summary()
The output is similar to our hand-crafted status message, but it's nice to use
the built-in functionality. After all, it was amended during development to
support our use case.
Luca Boccassi [Tue, 27 Jul 2021 22:15:18 +0000 (23:15 +0100)]
Merge pull request #20319 from keszybz/meson-0.53.2
Bump required meson version to 0.53.2
Luca Boccassi [Tue, 27 Jul 2021 20:17:38 +0000 (21:17 +0100)]
Merge pull request #20318 from poettering/seccomp-getrandom-fix
seccomp: getrandom() fix + more
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 18:11:41 +0000 (20:11 +0200)]
meson: use alias_target for doc update commands
This undoes part of
4c890ad3cc7b3445683d7b52bc00e4a58bef5e94: the
implementations of update-dbus-docs and update-man-rules are moved back to
man/meson.build, and alias_target() is used to keep the visible target names
unchanged.
The rules for man pages are reworked so that it's possible to invoke the
targets even if xstlproc is not available. After all, xsltproc is only needed
for the final formatted output, and not other processing.
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 17:58:55 +0000 (19:58 +0200)]
meson: use alias_target in one place
It was added in meson 0.52.0, and fits very nicely here.
See https://mesonbuild.com/Release-notes-for-0-52-0.html#alias_target.
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 17:32:35 +0000 (19:32 +0200)]
meson: use a/b instead of join_paths(a,b)
It is nicer and shorter.
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 15:48:53 +0000 (17:48 +0200)]
meson: use maps for udev program paths
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 14:20:40 +0000 (16:20 +0200)]
meson: adjust comment about find_program() usage
The FIXME was not correct: with 'dirs' we'd put the fixed path first
(see the docs for find_program()).
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 14:19:35 +0000 (16:19 +0200)]
meson: use project_build_root
As documented in /meson.build where the variable is defined,
meson.build_root() doesn't work as expected with project nesting. I have
no idea why anyone would want to embed systemd in another meson project,
but let's use the variable if we have it.
Lennart Poettering [Tue, 27 Jul 2021 15:11:09 +0000 (17:11 +0200)]
seccomp: move sched_getaffinity() from @system-service to @default
See: https://github.com/systemd/systemd/pull/20191#issuecomment-
881982739
In general, we shouldn't blanket move syscalls like this into @default,
given that glibc actually does have fallbacks, afaics. However, as
long as the syscalls are "read-only" and thus benign, I figure it's a
safe thing to do. But we should probably stick to a "if in doubt, don't"
rule, and put these syscalls in @system-service as default, but not into
@default.
I think in the real world @system-service is the sensible group people
should use, and not @default actually.
Lennart Poettering [Tue, 27 Jul 2021 15:10:21 +0000 (17:10 +0200)]
seccomp: drop getrandom() from @system-service
It's included in @default now, since
14f4b1b568907350d023d1429c1aa4aaa8925f22, and since @system-service
pulls that in we can drop it from @system-service.
Follow-up for #20191
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 14:16:07 +0000 (16:16 +0200)]
meson: require 0.53.2 and drop some workarounds for old meson
Ubuntu Bionic 18.04 has 0.45, so it was below the previously required
minimum version already. Focal 20.04 has 0.53.2. Let's require that
and use various features that are available.
Frantisek Sumsal [Tue, 27 Jul 2021 10:19:10 +0000 (12:19 +0200)]
meson: add a missing versiondep to libcryptsetup-plugins target
Otherwise the build sometimes fails in a racy way:
```
[274/1850] Compiling C object src/cryptsetup/cryptsetup-tokens/libcryptsetup-token-systemd-tpm2_static.a.p/cryptsetup-token-systemd-tpm2.c.o
FAILED: src/cryptsetup/cryptsetup-tokens/libcryptsetup-token-systemd-tpm2_static.a.p/cryptsetup-token-systemd-tpm2.c.o
cc -Isrc/cryptsetup/cryptsetup-tokens/libcryptsetup-token-systemd-tpm2_static.a.p (...) -c ../build/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c
../build/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c:12:10: fatal error: version.h: No such file or directory
12 | #include "version.h"
| ^~~~~~~~~~~
compilation terminated.
```
Follow-up to
d1ae38d85ae458ba8126465d25789e2721a75dba.
Riccardo Schirone [Thu, 17 Jun 2021 14:39:23 +0000 (16:39 +0200)]
Check return value of pam_get_item/pam_get_data functions
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:39:39 +0000 (09:39 +0200)]
man/tmpfiles.d: rewrite the description of age-by
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:39:19 +0000 (09:39 +0200)]
man: use title of docs/ pages when referring to them
There is some inconsistency, partially caused by the awkward naming
of the docs/ pages. But let's be consistent and use the "official" title.
If we ever change plural↔singular, we should use the same form everywhere.
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:37:29 +0000 (09:37 +0200)]
man: fix assorted issues reported by the manpage-l10n project
Fixes #20297.
Khem Raj [Mon, 26 Jul 2021 17:58:46 +0000 (10:58 -0700)]
networkd: Include linux/netdevice.h header
This header provides definitions for NET_NAME_UNKNOWN ånd NET_NAME_ENUM
Fixes build issue found with non-glibc systems
../git/src/network/networkd-link.c:1203:52: error: 'NET_NAME_UNKNOWN' undeclared (first use in this function)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Zbigniew Jędrzejewski-Szmek [Mon, 26 Jul 2021 09:46:12 +0000 (11:46 +0200)]
udev: when setting up lo, do not return an error
From #20300:
> commit
70f32a260b5ebb68c19ecadf5d69b3844896ba55
> Author: Yu Watanabe <watanabe.yu+github@gmail.com>
> Date: Sun May 23 16:59:40 2021 +0900
> udev/net: do not manage loopback interfaces
> There are nothing we can configure in udevd for loopback interfaces;
> no ethertool configs can be applied, MAC address, interface name should
> introduced a regression for 'udevadm test-builtin net_setup_link /sys/class/net/lo/'.
> Prior to this commit this command would exit with 0 whereas after this commit
> it exists with 1. This causes cloud-init on Archlinux to fail as this command
> is run by it and likely also netplan to have networkd rescan and re-apply a
> bunch of things on NICs.
I think it's reasonable to keep returning 0 here: we are intentatinally doing
nothing for the device, and that is not an error, but a (noop) success.
Fixes #20300.
Ondrej Kozina [Tue, 16 Mar 2021 19:13:28 +0000 (20:13 +0100)]
Add support for systemd-tpm2 libcryptsetup plugin.
Add support for systemd-tpm2 based LUKS2 device activation
via libcryptsetup plugin. This make the feature (tpm2 sealed
LUKS2 keyslot passphrase) usable from both systemd utilities
and cryptsetup cli.
The feature is configured via -Dlibcryptsetup-plugins combo
with default value set to 'auto'. It get's enabled automatically
when cryptsetup 2.4.0 or later is installed in build system.
Luca Boccassi [Mon, 26 Jul 2021 10:02:37 +0000 (11:02 +0100)]
Merge pull request #20276 from keszybz/rpm-restart-wip
Reload user daemons and restart user services at the end of the rpm transaction
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 13:35:23 +0000 (15:35 +0200)]
update-helper: also add "user-reexec" verb
This is not called from the systemd.triggers or systemd.macros files. Instead,
it would be called from the scriptlets in systemd rpm package itself, at the
place where we call systemctl daemon-reexec.
See https://github.com/systemd/systemd/pull/20289#issuecomment-
885622200 .
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 12:37:57 +0000 (14:37 +0200)]
rpm: restart user services at the end of the transaction
This closes an important gap: so far we would reexecute the system manager and
restart system services that were configured to do so, but we wouldn't do the
same for user managers or user services.
The scheme used for user managers is very similar to the system one, except
that there can be multiple user managers running, so we query the system
manager to get a list of them, and then tell each one to do the equivalent
operations: daemon-reload, disable --now, set-property Markers=+needs-restart,
reload-or-restart --marked.
The total time that can be spend on this is bounded: we execute the commands in
parallel over user managers and units, and additionally set SYSTEMD_BUS_TIMEOUT
to a lower value (15 s by default). User managers should not have too many
units running, and they should be able to do all those operations very
quickly (<< 1s). The final restart operation may take longer, but it's done
asynchronously, so we only wait for the queuing to happen.
The advantage of doing this synchronously is that we can wait for each step to
happen, and for example daemon-reloads can finish before we execute the service
restarts, etc. We can also order various steps wrt. to the phases in the rpm
transaction.
When this was initially proposed, we discussed a more relaxed scheme with bus
property notifications. Such an approach would be more complex because a bunch
of infrastructure would have to be added to system manager to propagate
appropriate notifications to the user managers, and then the user managers
would have to wait for them. Instead, now there is no new code in the managers,
all new functionality is contained in src/rpm/. The ability to call 'systemctl
--user user@' makes this approach very easy. Also, it would be very hard to
order the user manager steps and the rpm transaction steps.
Note: 'systemctl --user disable' is only called for a user managers that are
running. I don't see a nice way around this, and it shouldn't matter too much:
we'll just leave a dangling symlink in the case where the user enabled the
service manually.
A follow-up for https://bugzilla.redhat.com/show_bug.cgi?id=
1792468 and
fa97d2fcf64e0558054bee673f734f523373b146.
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 09:28:36 +0000 (11:28 +0200)]
rpm: call +needs-restart in parallel
Some rpms install a bunch of units… It seems nicer to invoke them all in
parallel. In particular, timeouts in systemctl also run in parallel, so if
there's some communication mishap, we will wait less.
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 09:22:33 +0000 (11:22 +0200)]
rpm: use a helper script to actually invoke systemctl commands
Instead of embedding the commands to invoke directly in the macros,
let's use a helper script as indirection. This has a couple of advantages:
- the macro language is awkward, we need to suffix most commands by "|| :"
and "\", which is easy to get wrong. In the new scheme, the macro becomes
a single simple command.
- in the script we can use normal syntax highlighting, shellcheck, etc.
- it's also easier to test the invoked commands by invoking the helper
manually.
- most importantly, the logic is contained in the helper, i.e. we can
update systemd rpm and everything uses the new helper. Before, we would
have to rebuild all packages to update the macro definition.
This raises the question whether it makes sense to use the lua scriptlets when
the real work is done in a bash script. I think it's OK: we still have the
efficient lua scripts that do the short scripts, and we use a single shared
implementation in bash to do the more complex stuff.
The meson version is raised to 0.47 because that's needed for install_mode.
We were planning to raise the required version anyway…
Frantisek Sumsal [Fri, 23 Jul 2021 10:53:31 +0000 (12:53 +0200)]
test: make sure we don't access an unbound variable
```
testsuite-60.sh[759]: + grep -q '(mount-monitor-dispatch) entered rate limit'
testsuite-60.sh[571]: + sleep 5
testsuite-60.sh[761]: ++ date -u +%s
testsuite-60.sh[571]: + [[
1627037066 -le
1627037061 ]]
testsuite-60.sh[571]: /usr/lib/systemd/tests/testdata/units/testsuite-60.sh: line 41: entered_rl: unbound variable
```
Luca Boccassi [Fri, 23 Jul 2021 14:35:34 +0000 (15:35 +0100)]
Merge pull request #20288 from keszybz/freeze-no-malloc
Don't call malloc from freeze which is called in a signal handler
Luca Boccassi [Fri, 23 Jul 2021 13:57:04 +0000 (14:57 +0100)]
TODO: homed + user session namespace
ratijas [Fri, 23 Jul 2021 10:32:52 +0000 (13:32 +0300)]
man: Fix incorrect EFI vendor UUID (last missing nibble)
Luca Boccassi [Thu, 22 Jul 2021 21:21:10 +0000 (22:21 +0100)]
discover-image: mount as read-only when extracting metadata
We don't need to modify the image, and the loopback device is already set to read-only.
Cristian Rodríguez [Fri, 9 Jul 2021 21:19:05 +0000 (17:19 -0400)]
malloc() uses getrandom now
glibc master uses getrandom in malloc since https://sourceware.org/git/?p=glibc.git;a=commit;h=
fc859c304898a5ec72e0ba5269ed136ed0ea10e1 , getrandom should be in the default set so to avoid all non trivial programs to fallback to a PRNG.
Franck Bui [Fri, 23 Jul 2021 05:27:19 +0000 (07:27 +0200)]
logind: action* parameters can't be NULL in verify_shutdown_creds()
"action", "action_multiple_sessions" and "action_ignore_inhibit" can't be NULL
in practice so let's simplify a bit the code.
No functional change.
chlorophyll-zz [Fri, 23 Jul 2021 08:19:40 +0000 (10:19 +0200)]
Sensor Y Axis is inverted for TrekStor Surftab W1
IIO Sensor Y Axis is inverted for TrekStor Surftab W1.
When iio-sensor-proxy is running, up is down and down is up.
This fixes the inversion.
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:36:44 +0000 (11:36 +0200)]
Add variant of close_all_fds() that does not allocate and use it in freeze()
Even though it's just a fallback path, let's not be sloppy and allocate in
the crash handler.
> The deadlock happens because systemd crash in malloc() then in signal
> handler, it calls malloc() (close_all_fds()-> opendir()-> __alloc_dir())
> again. malloc() is not a signal-safe function, maybe we should re-think
> the logic here.
Fixes #20266.
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:34:00 +0000 (11:34 +0200)]
Move freeze() into shared/
Library code should not call freeze(), this is something that should
only be done by "application code", so moving it into shared/ is appropriate.
The fallback to call _exit() is dropped: let's trust that the infinite loop
is infinite.
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:20:39 +0000 (11:20 +0200)]
Move fork_agent() into shared/
Currently it's only used in two places in src/shared/, so the function was
already included just once in compiled code. But it seems appropriate to
move it there anyway, because library code should have no need to fork
agents, so it doesn't belong in basic/.
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:06:26 +0000 (11:06 +0200)]
basic/process-util: use xsprintf() in one more place
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:06:13 +0000 (11:06 +0200)]
Make oom_score_adjust_is_valid() static
It has only one user and we don't need to put it in basic/.
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 08:51:14 +0000 (10:51 +0200)]
basic/fd-util: sort the 'except' array in place
We need a sorted list of fds to skip over when closing. We would allocate a
copy of the passed array to do the sort. But all callers construct a temporary
array to pass to us, so it is pointless to copy it again.
close_all_fds/safe_fork_full/namespace_fork/fork_agent are changed to pass
a non-const int array. I checked all users, and all callers are fine with
the array being sorted.
The function was returning some number (sometimes 1, sometimes the extent
of the range passed over to close_range(), ???). Anyway, all callers only
check for error, so let's return 0 on success.
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 07:44:26 +0000 (09:44 +0200)]
Merge pull request #20103 from flokli/nsswitch-nss-myhostname
man: stop recommending putting myhostname after dns
Florian Klink [Sat, 17 Jul 2021 17:49:42 +0000 (19:49 +0200)]
man: document nss-{resolve,myhostname} resolving in the other direction, too
Florian Klink [Thu, 1 Jul 2021 20:11:27 +0000 (22:11 +0200)]
man: stop recommending putting myhostname after dns
nss-resolve also looks in /etc/hosts, and has the same local hostname
resolving logic as nss-myhostname. We shouldn't recommend another order
than nss-resolve uses internally.
When nss-resolve is used, there's no possibility to override
nss-myhostname hosts via DNS *anyway*.
On top of that, it's not a good idea to allow DNS to override local
hostnames as all - at least not something we should advertise in the
docs.
Followup of
f918c67d38ba6ccd4eb0dc657f3f3155e5010cae /
https://github.com/systemd/systemd/pull/16754.
hikigaya58 [Thu, 22 Jul 2021 15:41:48 +0000 (23:41 +0800)]
Typo correction on systemd.unit man page
Luca Boccassi [Thu, 22 Jul 2021 14:47:21 +0000 (15:47 +0100)]
Merge pull request #20273 from keszybz/extended-job-status
Propagate the original command line when reexecuting PID1
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 06:21:46 +0000 (08:21 +0200)]
pid1: propagate the original command line when reexecuting
When we reexec the manager in a container, we lose configuration settings on
the kernel command line:
$ systemd-nspawn -M rawhide -b systemd.status-unit-format=name systemd.show-status=yes
...
# tr '\0' ' ' </proc/1/cmdline
/usr/lib/systemd/systemd systemd.status_unit_format=combined systemd.show-status=yes
# sudo systemctl daemon-reexec
# tr '\0' ' ' </proc/1/cmdline
/usr/lib/systemd/systemd --system --deserialize 20
This means that after daemon-reexec, the settings that we gain from the
commandline are reset to defaults.
So let's reeexecute with the original arguments copied over, modulo some
filtering.
Luca BRUNO [Thu, 8 Jul 2021 09:47:32 +0000 (09:47 +0000)]
docs: move /var/log/README to a tmpfiles.d symlink
This moves the /var/log/README content out of /var and into the
docs location, replacing the previous file with a symlink
created through a tmpfiles.d entry.
Luca Boccassi [Wed, 21 Jul 2021 10:39:10 +0000 (11:39 +0100)]
Merge pull request #20123 from keszybz/extended-job-status
Nested job status for systemd+user service managers
Matthijs van Duin [Wed, 21 Jul 2021 09:10:36 +0000 (11:10 +0200)]
sd-bus: fix missing initializer in SD_BUS_VTABLE_END (#20253)
When two fields were added to the vtable.x.start struct, no initializers
for these were added to SD_BUS_VTABLE_END which also (ab)used that
struct (albeit sneakily by using non-designated initialization).
While C tolerates this, C++ prohibits these missing initializers, and
both g++ and clang++ will complain when using -Wextra.
This patch gives SD_BUS_VTABLE_END its own case in the union and
clarifies its initialization.
I tested the behaviour of g++ 10.2 and clang 11 in various cases. Both will warn
(-Wmissing-field-initializers, implied by -Wextra) if you provide initializers for some
but not all fields of a struct. Declaring x.end as empty struct or using an empty initializer
{} to initialize the union or one of its members is valid C++ but not C, although both gcc
and clang accept it without warning (even at -Wall -Wextra -std=c90/c++11) unless you
use -pedantic (which requires -std=c99/c++2a to support designated initializers).
Interestingly, .x = { .start = { 0, 0, NULL } } is the only initializer I found for the union
(among candidates for SD_BUS_VTABLE_END) where gcc doesn't zero-fill it entirely
when allocated on stack, it looked like it did in all other cases (I only examined this on
32-bit arm). clang always seems to initialize all bytes of the union.
[zjs: test case:
$ cat vtable-test.cc
#include "sd-bus.h"
const sd_bus_vtable vtable[] = {
SD_BUS_VTABLE_END
};
$ g++ -I src/systemd/ -Wall -Wmissing-field-initializers -c vtable-test.cc
vtable-test.cc:5:1: warning: missing initializer for member ‘sd_bus_vtable::<unnamed union>::<unnamed struct>::features’ [-Wmissing-field-initializers]
5 | };
| ^
vtable-test.cc:5:1: warning: missing initializer for member ‘sd_bus_vtable::<unnamed union>::<unnamed struct>::vtable_format_reference’ [-Wmissing-field-initializers]
$ clang++ -I src/systemd/ -Wmissing-field-initializers -c vtable-test.cc
vtable-test.cc:4:4: warning: missing field 'features' initializer [-Wmissing-field-initializers]
SD_BUS_VTABLE_END
^
src/systemd/sd-bus-vtable.h:188:28: note: expanded from macro 'SD_BUS_VTABLE_END'
.x = { { 0 } }, \
^
1 warning generated.
Both warnings are gone with the patch.]
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 12:02:36 +0000 (14:02 +0200)]
rpm: don't specify the full path for systemctl and other commands
We can make things a bit simpler and more readable by not specifying the path.
Since we didn't specify the full path for all commands (including those invoked
recursively by anythign we invoke), this didn't really privide any security or
robustness benefits. I guess that full paths were used because this style of
rpm packagnig was popular in the past, with macros used for everything
possible, with special macros for common commands like %{__ln} and %{__mkdir}.
Zbigniew Jędrzejewski-Szmek [Wed, 21 Jul 2021 08:50:08 +0000 (10:50 +0200)]
Merge pull request #20087 from xen0n/loongarch64-gpt
gpt: support LoongArch 64-bit
Zbigniew Jędrzejewski-Szmek [Tue, 20 Jul 2021 12:39:23 +0000 (14:39 +0200)]
Merge pull request #20256 from keszybz/one-alloca-too-many
basic/unit-name: do not use strdupa() on a path
WANG Xuerui [Wed, 30 Jun 2021 12:33:37 +0000 (20:33 +0800)]
gpt: reformat for restoring vertical alignment
WANG Xuerui [Wed, 16 Jun 2021 08:44:38 +0000 (16:44 +0800)]
gpt: support LoongArch 64-bit
Aakash Singh [Mon, 19 Jul 2021 18:57:48 +0000 (00:27 +0530)]
hwdb: 60-keyboard::remove hardcoded definition for KEYBOARD_KEY_56 for MSI Prestige And Modern
rene [Tue, 20 Jul 2021 05:45:04 +0000 (15:45 +1000)]
Minor typo (#20254)
Correct resoulution with resolution.
Yu Watanabe [Mon, 19 Jul 2021 21:13:50 +0000 (06:13 +0900)]
Merge pull request #20251 from keszybz/test-format-lifetime
Add test for format_lifetime() and fix prefix
monosans [Mon, 19 Jul 2021 12:59:10 +0000 (15:59 +0300)]
log-generator: count arguments as offset from an iterator
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 17:58:13 +0000 (19:58 +0200)]
basic/time-util: inline one more variable declaration
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 13:39:56 +0000 (15:39 +0200)]
udev-event: drop unused assignments
clang's static analyzer reports:
Value stored to 'l' is never read
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 17:40:41 +0000 (19:40 +0200)]
networkd: fix and simplify format_lifetime()
We would copy "forever" into the buffer. This is a fairly common case, so let's
do a microoptimization and return a static string. (All callers use the return
pointer, so this works just as well.)
The prefix "for " was not displayed, because the pointer to the part of the
buffer after "for " was returned. (Maybe it's just me, but I find strpcpy()
and associated functions really hard to use… I always have to look up what the
do exactly and what the return value is.)
A simple test is added.
Yu Watanabe [Mon, 19 Jul 2021 06:18:37 +0000 (15:18 +0900)]
network: configure address with requested lifetime
When assigning the same address provided by a dynamic addressing
protocol, the new lifetime is stored on Request::Address, but not
Address object in Link object, which can be obtained by address_get().
So, we need to configure address with Address object in Request.
Fixes #20245.
Frantisek Sumsal [Thu, 15 Jul 2021 18:56:04 +0000 (20:56 +0200)]
ci: add ppc64le Rawhide chroot to the Packit chroot set
James Hilliard [Sun, 11 Jul 2021 10:39:33 +0000 (04:39 -0600)]
Add meson option to disable urlify.
Useful for systems that don't use a version of less with hyperlink
support.
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 08:32:50 +0000 (10:32 +0200)]
core/main: wrap long comment lines
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 16:28:11 +0000 (18:28 +0200)]
manager: print status text of the service when waiting for a job
This does two semi-independent but interleaved things: firstly, the manager now
prints the status text (if available) of a service when we have a job running
for that service and it is slow. Because it's hard to fit enough info on the
line, we only do this if the output mode uses unit names. The format of the
line "… job is running for …" is changed to be shorter. This way we can
somewhat reasonably fit two status messages on one line.
Secondly, the manager now sends more information using sd_notify. This mostly
matters for in case of the user manager. In particular, we notify when starting
one of the special units. Without this, when the system manager would display a
line about waiting for the user manager, it would show status like "Ready.",
which is confusing. Now it'll either show something like "Started special unit
shutdown.target", or the line about waiting for a user job.
Also, the timeouts for the user manager are lowered: the user manager usually
(always?) has status disabled, so we would wait for 25 seconds before showing
job progress. Normally we don't expect to have any jobs that take more than a
second. So let's start the progress output fairly quickly, like we would if
status showing was enabled. This obviously makes the output in the system
manager about the user manager more useful. The timeouts are "desynchronized"
by a fraction so if there are multiple jobs running, we'll cycle through
showing all combinations.
Example output:
Stopping user@1000.service...
[ OK ] Stopped dracut-shutdown.service.
[ OK ] Stopped systemd-logind.service.
[ OK ] Stopped systemd-logind.service - User Login Management.
[* ] Job user@1000.service/stop running (2s / 2min): (1 of 2) User job slowstop.service/stop running (1s / 1min 30s)...
[*** ] Job user@1000.service/stop running (3s / 2min): (2 of 2) User job slowstop2.service/stop running (2s / 1min 30s)...
[ ***] Job user@1000.service/stop running (4s / 2min): (1 of 2) User job slowstop.service/stop running (4s / 1min 30s)...
[ *] Job user@1000.service/stop running (5s / 2min): (1 of 2) User job slowstop.service/stop running (5s / 1min 30s)...
[ ***] Job user@1000.service/stop running (6s / 2min): (2 of 2) User job slowstop2.service/stop running (6s / 1min 30s)...
[*** ] Job user@1000.service/stop running (8s / 2min): (1 of 2) User job slowstop.service/stop running (7s / 1min 30s)...
[*** ] Job user@1000.service/stop running (10s / 2min): (2 of 2) User job slowstop2.service/stop running (9s / 1min 30s)...
[ *** ] Job user@1000.service/stop running (11s / 2min): (1 of 2) User job slowstop.service/stop running (10s / 1min 30s)...
[ *] Job user@1000.service/stop running (12s / 2min): (2 of 2) User job slowstop2.service/stop running (12s / 1min 30s)...
[ ***] Job user@1000.service/stop running (13s / 2min): (1 of 2) User job slowstop.service/stop running (13s / 1min 30s)...
[*** ] Job user@1000.service/stop running (15s / 2min): (2 of 2) User job slowstop2.service/stop running (14s / 1min 30s)...
[* ] Job user@1000.service/stop running (15s / 2min): (2 of 2) User job slowstop2.service/stop running (14s / 1min 30s)...
[*** ] Job user@1000.service/stop running (16s / 2min): User job slowstop.service/stop running (16s / 1min 30s)...
[ ***] Job user@1000.service/stop running (18s / 2min): User job slowstop.service/stop running (17s / 1min 30s)...
[ *] Job user@1000.service/stop running (19s / 2min): User job slowstop.service/stop running (18s / 1min 30s)...
[ ***] Job user@1000.service/stop running (20s / 2min): User job slowstop.service/stop running (19s / 1min 30s)...
[* ] Job user@1000.service/stop running (22s / 2min): User job slowstop.service/stop running (22s / 1min 30s)...
[** ] Job user@1000.service/stop running (30s / 2min): User job slowstop.service/stop running (29s / 1min 30s)...
[ ***] Job user@1000.service/stop running (32s / 2min): User job slowstop.service/stop running (31s / 1min 30s)...
[ *] Job user@1000.service/stop running (33s / 2min): User job slowstop.service/stop running (32s / 1min 30s)...
[ ***] Job user@1000.service/stop running (34s / 2min): User job slowstop.service/stop running (33s / 1min 30s)...
[** ] Job user@1000.service/stop running (37s / 2min): User job slowstop.service/stop running (36s / 1min 30s)...
[ *** ] Job user@1000.service/stop running (41s / 2min): User job slowstop.service/stop running (41s / 1min 30s)...
[ OK ] Stopped user@1000.service - User Manager for UID 1000.
Stopping user-runtime-dir@1000.service - User Runtime Directory /run/user/1000...
[ OK ] Unmounted run-user-1000.mount - /run/user/1000.
[ OK ] Stopped user-runtime-dir@1000.service - User Runtime Directory /run/user/1000.
If the output width is lower than approximately 100 columns, the output stops
being very useful. No idea what to do about that.
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 10:25:23 +0000 (12:25 +0200)]
manager: rework sending of STATUS=
We would send READY=1,STATUS="Startup finished in …" once after finishing
boot. This changes the message to just "Ready.". The time used to reach
readiness is not part of the ongoing status — it's just a bit of debug
information that it useful in some scenarious, but completely uninteresting
most of the time. Also, when we start sending status about other things in
subsequent patches, we can't really go back to showing "Startup finished in …"
later on. So let's just show "Ready." whenever we're in the steady state.
In manager_check_finished(), more steps are skipped if MANAGER_IS_FINISHED().
Those steps are idempotent, but no need to waste cycles trying to do them
more than once.
We'll now also check whether to send the status message whenever the job queue
runs empty. If we already sent the exact same message already, we'll not send
again.
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 16:22:03 +0000 (18:22 +0200)]
manager: always log when starting a "special unit"
This is the initiatation of the machine shutdown/reboot/etc, so it's
useful to log about this. We log about the steps that we take, but
so far we didn't really log why we started the sequence (except at
debug level).
The function is renamed, because we also use it for dbus.service,
not just targets.
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 15:00:00 +0000 (17:00 +0200)]
core: add helper to retrieve service.status_text
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 14:59:23 +0000 (16:59 +0200)]
core: align string tables
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 14:48:56 +0000 (16:48 +0200)]
core: modernize asprintf error handling
The man page says asprintf() pointer is "undefined" on error, but the
only meaningful interpretation is that it's either NULL or points to
something that should be freed with free().
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 13:53:38 +0000 (15:53 +0200)]
core: split out manager-serialize.[ch]
The file is super long, so let's split this out one subject to a new file.
Luca Boccassi [Sat, 17 Jul 2021 16:49:20 +0000 (17:49 +0100)]
git-contrib: copypaste-friendly output
Format output in a manner that can be copypasted as-is to NEWS.
That is, with 8 spaces indentation and wrapped at 80 columns.
Before:
$ tools/git-contrib.sh
Ben Stockett,
Carl Lei,
Frantisek Sumsal,
Gibeom Gwon,
Hugo Osvaldo Barrera,
James Hilliard,
Jan Palus,
Lennart Poettering,
Luca Boccassi,
Luca BRUNO,
Mike Gilbert,
nassir90,
nl6720,
Raul Tambre,
Yegor Alexeyev,
Yu Watanabe,
Zbigniew Jędrzejewski-Szmek,
After:
Contributions from: Ben Stockett, Carl Lei, Frantisek Sumsal,
Gibeom Gwon, Hugo Osvaldo Barrera, James Hilliard, Jan Palus,
Lennart Poettering, Luca Boccassi, Luca BRUNO, Mike Gilbert,
nassir90, nl6720, Raul Tambre, Yegor Alexeyev, Yu Watanabe,
Zbigniew Jędrzejewski-Szmek
duament [Sat, 17 Jul 2021 17:17:41 +0000 (01:17 +0800)]
shell-completion/zsh/_systemd-run: Fix completion of command names and arguments
Luca Boccassi [Thu, 15 Jul 2021 21:21:11 +0000 (22:21 +0100)]
Merge pull request #20225 from mrc0mmand/selinux-nspawn-sanity
test: add a sanity test for #19976
Luca Boccassi [Thu, 15 Jul 2021 16:06:20 +0000 (17:06 +0100)]
Merge pull request #20228 from yuwata/follow-ups-20109
tree-wide: FORMAT_TIMESPAN() or friends must be used as a function argument
Yu Watanabe [Thu, 15 Jul 2021 11:02:27 +0000 (20:02 +0900)]
tree-wide: FORMAT_TIMESTAMP() or friends must be used as a function argument
Follow-ups for #20109.