]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
2 years agoman: fix assorted issues reported by the manpage-l10n project
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.

2 years agoAdd support for systemd-tpm2 libcryptsetup plugin.
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.

2 years agoMerge pull request #20276 from keszybz/rpm-restart-wip
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

2 years agoupdate-helper: also add "user-reexec" verb 20276/head
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 .

2 years agorpm: restart user services at the end of the transaction
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.

2 years agorpm: call +needs-restart in parallel
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.

2 years agorpm: use a helper script to actually invoke systemctl commands
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…

2 years agotest: make sure we don't access an unbound variable
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
```

2 years agoMerge pull request #20288 from keszybz/freeze-no-malloc
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

2 years agoTODO: homed + user session namespace
Luca Boccassi [Fri, 23 Jul 2021 13:57:04 +0000 (14:57 +0100)] 
TODO: homed + user session namespace

2 years agoman: Fix incorrect EFI vendor UUID (last missing nibble)
ratijas [Fri, 23 Jul 2021 10:32:52 +0000 (13:32 +0300)] 
man: Fix incorrect EFI vendor UUID (last missing nibble)

2 years agodiscover-image: mount as read-only when extracting metadata
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.

2 years agomalloc() uses getrandom now
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.

2 years agologind: action* parameters can't be NULL in verify_shutdown_creds()
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.

2 years agoSensor Y Axis is inverted for TrekStor Surftab W1
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.

2 years agoAdd variant of close_all_fds() that does not allocate and use it in freeze() 20288/head
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.

2 years agoMove freeze() into shared/
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.

2 years agoMove fork_agent() into shared/
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/.

2 years agobasic/process-util: use xsprintf() in one more place
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:06:26 +0000 (11:06 +0200)] 
basic/process-util: use xsprintf() in one more place

2 years agoMake oom_score_adjust_is_valid() static
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/.

2 years agobasic/fd-util: sort the 'except' array in place
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.

2 years agoMerge pull request #20103 from flokli/nsswitch-nss-myhostname
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

2 years agoman: document nss-{resolve,myhostname} resolving in the other direction, too 20103/head
Florian Klink [Sat, 17 Jul 2021 17:49:42 +0000 (19:49 +0200)] 
man: document nss-{resolve,myhostname} resolving in the other direction, too

2 years agoman: stop recommending putting myhostname after dns
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.

2 years agoTypo correction on systemd.unit man page
hikigaya58 [Thu, 22 Jul 2021 15:41:48 +0000 (23:41 +0800)] 
Typo correction on systemd.unit man page

2 years agoMerge pull request #20273 from keszybz/extended-job-status
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

2 years agopid1: propagate the original command line when reexecuting 20273/head
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.

2 years agodocs: move /var/log/README to a tmpfiles.d symlink
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.

2 years agoMerge pull request #20123 from keszybz/extended-job-status
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

2 years agosd-bus: fix missing initializer in SD_BUS_VTABLE_END (#20253)
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.]

2 years agorpm: don't specify the full path for systemctl and other commands
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}.

2 years agoMerge pull request #20087 from xen0n/loongarch64-gpt
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

2 years agoMerge pull request #20256 from keszybz/one-alloca-too-many
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

2 years agogpt: reformat for restoring vertical alignment 20087/head
WANG Xuerui [Wed, 30 Jun 2021 12:33:37 +0000 (20:33 +0800)] 
gpt: reformat for restoring vertical alignment

2 years agogpt: support LoongArch 64-bit
WANG Xuerui [Wed, 16 Jun 2021 08:44:38 +0000 (16:44 +0800)] 
gpt: support LoongArch 64-bit

2 years agohwdb: 60-keyboard::remove hardcoded definition for KEYBOARD_KEY_56 for MSI Prestige...
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

2 years agoMinor typo (#20254)
rene [Tue, 20 Jul 2021 05:45:04 +0000 (15:45 +1000)] 
Minor typo (#20254)

Correct resoulution with resolution.

2 years agoMerge pull request #20251 from keszybz/test-format-lifetime
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

2 years agolog-generator: count arguments as offset from an iterator
monosans [Mon, 19 Jul 2021 12:59:10 +0000 (15:59 +0300)] 
log-generator: count arguments as offset from an iterator

2 years agobasic/time-util: inline one more variable declaration 20251/head
Zbigniew Jędrzejewski-Szmek [Mon, 19 Jul 2021 17:58:13 +0000 (19:58 +0200)] 
basic/time-util: inline one more variable declaration

2 years agoudev-event: drop unused assignments
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

2 years agonetworkd: fix and simplify format_lifetime()
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.

2 years agonetwork: configure address with requested lifetime
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.

2 years agoci: add ppc64le Rawhide chroot to the Packit chroot set
Frantisek Sumsal [Thu, 15 Jul 2021 18:56:04 +0000 (20:56 +0200)] 
ci: add ppc64le Rawhide chroot to the Packit chroot set

2 years agoAdd meson option to disable urlify.
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.

2 years agocore/main: wrap long comment lines
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 08:32:50 +0000 (10:32 +0200)] 
core/main: wrap long comment lines

2 years agomanager: print status text of the service when waiting for a job 20123/head
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.

2 years agomanager: rework sending of STATUS=
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.

2 years agomanager: always log when starting a "special unit"
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.

2 years agocore: add helper to retrieve service.status_text
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 15:00:00 +0000 (17:00 +0200)] 
core: add helper to retrieve service.status_text

2 years agocore: align string tables
Zbigniew Jędrzejewski-Szmek [Fri, 2 Jul 2021 14:59:23 +0000 (16:59 +0200)] 
core: align string tables

2 years agocore: modernize asprintf error handling
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().

2 years agocore: split out manager-serialize.[ch]
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.

2 years agogit-contrib: copypaste-friendly output
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

2 years agoshell-completion/zsh/_systemd-run: Fix completion of command names and arguments
duament [Sat, 17 Jul 2021 17:17:41 +0000 (01:17 +0800)] 
shell-completion/zsh/_systemd-run: Fix completion of command names and arguments

2 years agoMerge pull request #20225 from mrc0mmand/selinux-nspawn-sanity
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

2 years agoMerge pull request #20228 from yuwata/follow-ups-20109
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

2 years agotree-wide: FORMAT_TIMESTAMP() or friends must be used as a function argument 20228/head
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.

2 years agonetwork: slightly simplify log_address_debug()
Yu Watanabe [Thu, 15 Jul 2021 09:56:09 +0000 (18:56 +0900)] 
network: slightly simplify log_address_debug()

2 years agonetwork: introduce FORMAT_LIFETIME()
Yu Watanabe [Thu, 15 Jul 2021 09:48:56 +0000 (18:48 +0900)] 
network: introduce FORMAT_LIFETIME()

Fixes a bug introduced by 5291f26d4a6450d1fbf3656640ef20c5e78aa6a5.

Fixes #20227.

2 years agoMerge pull request #20209 from yuwata/network-dhcp4-semi-static-route-with-use-gateway-no
Yu Watanabe [Thu, 15 Jul 2021 02:57:11 +0000 (11:57 +0900)] 
Merge pull request #20209 from yuwata/network-dhcp4-semi-static-route-with-use-gateway-no

network: dhcp4: support semi-static route with Gateway=_dhcp4 with UseGateway=no

2 years agotest-network: add a testcase for semi-static route with Gateway=_dhcp4 when UseGateway=no 20209/head
Yu Watanabe [Mon, 12 Jul 2021 16:20:53 +0000 (01:20 +0900)] 
test-network: add a testcase for semi-static route with Gateway=_dhcp4 when UseGateway=no

2 years agotest-network: adjust testcases to follow the previous changes
Yu Watanabe [Tue, 13 Jul 2021 04:08:10 +0000 (13:08 +0900)] 
test-network: adjust testcases to follow the previous changes

2 years agonetwork: dhcp4: also support semi-static routes with Gateway=_dhcp4 when UseGateway...
Yu Watanabe [Mon, 12 Jul 2021 16:06:08 +0000 (01:06 +0900)] 
network: dhcp4: also support semi-static routes with Gateway=_dhcp4 when UseGateway=no or UseRoutes=no

This makes the default gateway is read from classless static routes or
router option even if UseGateway=no or UseRoutes=no, and will be used
when configuring semi-static routes such that specified with Gateway=_dhcp4.

This also changes the behavior of RoutesToDNS= or RoutesToNTP=.
Previously, the DNS or NTP servers are not in the same network, then the
routes to the servers were not configured when UseGateway=no or
UseRoutes=no. With this commit, the default gateway in classless static
routes or router option will used to connecting the servers even if
UseGateway=no or UseRoutes=no.

Fixes #20208.

2 years agotest: add a sanity test for systemd/systemd#19976 20225/head
Frantisek Sumsal [Wed, 14 Jul 2021 18:29:37 +0000 (20:29 +0200)] 
test: add a sanity test for systemd/systemd#19976

which should ensure we can use nspawn containers with SELinux context set via
the `--selinux-context=` and `--selinux-apifs-context=` options.

2 years agotest: don't explicitly disable SELinux
Frantisek Sumsal [Wed, 14 Jul 2021 18:27:23 +0000 (20:27 +0200)] 
test: don't explicitly disable SELinux

We don't install any policies by default, so it shouldn't interfere with
anything (and it would save me some headache).

2 years agonetwork: further unification of MUD url parsers
Yu Watanabe [Wed, 14 Jul 2021 06:47:40 +0000 (15:47 +0900)] 
network: further unification of MUD url parsers

Follow-up for 89fa9a6b7b2505aa2ce18febf1e28e79510dfec2.

2 years agoman/systemd.network: Fix duplicate Xfrm description
Raul Tambre [Wed, 14 Jul 2021 11:58:31 +0000 (14:58 +0300)] 
man/systemd.network: Fix duplicate Xfrm description

It's already listed along with others (Tunnel, VLAN, etc.) and its description matches those. The duplication was introduced by commit c3006a485c9c35c0ab947479ff1dd7149fda9750.

2 years agoMerge pull request #20109 from keszybz/timestamp-macros
Yu Watanabe [Wed, 14 Jul 2021 07:14:08 +0000 (16:14 +0900)] 
Merge pull request #20109 from keszybz/timestamp-macros

Add macros that define scratch buffer internally for timestamp/timespan formatting

2 years agonetwork: update interface name stored in various network engines
Yu Watanabe [Tue, 13 Jul 2021 11:02:44 +0000 (20:02 +0900)] 
network: update interface name stored in various network engines

2 years agoMerge pull request #20120 from yuwata/test-oomd-debug
Yu Watanabe [Tue, 13 Jul 2021 14:30:16 +0000 (23:30 +0900)] 
Merge pull request #20120 from yuwata/test-oomd-debug

test: enable debug logging of oomd

2 years agonetwork: check the received interface name is actually new
Yu Watanabe [Mon, 12 Jul 2021 12:23:41 +0000 (21:23 +0900)] 
network: check the received interface name is actually new

For some reasons I do not know, on interface renaming, kernel once send
netlink message with old interface name, and then send with new name.
If eth0 is renamed, and then new interface appears as eth0, then the
message with the old name 'eth0' makes the interface enters failed
state.

To ignore such invalid(?) rename event messages, let's confirm the
received interface name.

Fixes #20203.

2 years agohomed: allow systemd-homed access to FIDO2 devices
Gibeom Gwon [Mon, 12 Jul 2021 17:57:43 +0000 (02:57 +0900)] 
homed: allow systemd-homed access to FIDO2 devices

Add DeviceAllow= option for FIDO2 devices in systemd-homed.service.

2 years agoTODO: note cgroup.kill and memfd_secret
Luca Boccassi [Mon, 12 Jul 2021 21:47:59 +0000 (22:47 +0100)] 
TODO: note cgroup.kill and memfd_secret

2 years agoMerge pull request #20202 from yuwata/network-fix-manage-foreign-routes-no
Luca Boccassi [Mon, 12 Jul 2021 18:11:37 +0000 (19:11 +0100)] 
Merge pull request #20202 from yuwata/network-fix-manage-foreign-routes-no

network: fix ManageForeignRoutes=no

2 years agosystemctl: show error when help for unknown unit is requested
Zbigniew Jędrzejewski-Szmek [Mon, 12 Jul 2021 10:32:39 +0000 (12:32 +0200)] 
systemctl: show error when help for unknown unit is requested

Fixes #20189. We would only log at debug level and return failure, which looks
like a noop for the user.

('help' accepts multiple arguments and will show multiple concatenated man
pages in that case. Actually, it will also show multiple concatenated man pages
if the Documentation= setting lists multiple pages. I don't think it's very
terribly useful, but, meh, I don't think we can do much better. If a user
requests a help for a two services, one known and one unknown, there'll now be
a line in the output. It's not very user friendly, but not exactly wrong too.)

2 years agotest-network: add a testcase for ManageForeignRoutes=no 20202/head
Yu Watanabe [Mon, 12 Jul 2021 07:36:55 +0000 (16:36 +0900)] 
test-network: add a testcase for ManageForeignRoutes=no

2 years agoman/dnssec-trust-anchors: fix an XML syntax typo
Luca BRUNO [Mon, 12 Jul 2021 09:41:30 +0000 (09:41 +0000)] 
man/dnssec-trust-anchors: fix an XML syntax typo

This fixes an XML syntax typo in the 'dnssec-trust-anchors'
documentation.

2 years agonetwork: also check addresses when determine a gateway address is reachable or not
Yu Watanabe [Mon, 12 Jul 2021 06:46:44 +0000 (15:46 +0900)] 
network: also check addresses when determine a gateway address is reachable or not

Fixes #20201.

2 years agoman: fix RFC number
Carl Lei [Mon, 12 Jul 2021 02:06:08 +0000 (10:06 +0800)] 
man: fix RFC number

#19947 didn't fix both.

2 years agolibudev: add "Libs.private: -lrt -pthread" to libudev.pc
Mike Gilbert [Fri, 9 Jul 2021 17:05:23 +0000 (13:05 -0400)] 
libudev: add "Libs.private: -lrt -pthread" to libudev.pc

This resolves a failure when linking cryptsetup.static against libudev.a.

```
libtool: link: x86_64-pc-linux-gnu-gcc -Wall -O2 -pipe -march=amdfam10 -static -O2 -o cryptsetup.static lib/utils_crypt.o lib/utils_loop.o lib/utils_io.o lib/utils_blkid.o src/utils_tools.o src/utils_password.o src/utils_luks2.o src/utils_blockdev.o src/cryptsetup.o -pthread -pthread  -Wl,--as-needed ./.libs/libcryptsetup.a -largon2 -lrt -ljson-c -lpopt -luuid -lblkid -lssl -lcrypto -lz -ldl -ldevmapper -lm -lpthread -ludev -pthread
/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib64/libudev.a(src_libsystemd_sd-daemon_sd-daemon.c.o): in function `sd_is_mq':
(.text.sd_is_mq+0x3a): undefined reference to `mq_getattr'
```

2 years agoDisable non-explicit sbatvars autodetection for cross builds.
James Hilliard [Sat, 10 Jul 2021 10:36:50 +0000 (04:36 -0600)] 
Disable non-explicit sbatvars autodetection for cross builds.

Since autodetection is unlikely to work reliably for cross builds
disable it unless explicitly enabled.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
2 years agoUpdated manpage for sd_bus_set_property
Ben Stockett [Fri, 9 Jul 2021 20:29:36 +0000 (20:29 +0000)] 
Updated manpage for sd_bus_set_property

Updated manpage for sd_bus_set_property and sd_bus_set_propertyv. In the old manpage, these functions included the parameter sd_bus_message **reply when the actual function had no such argument.

2 years agoFixed typo (#20187)
nassir90 [Fri, 9 Jul 2021 20:16:02 +0000 (21:16 +0100)] 
Fixed typo (#20187)

* Fixed typo

Before, the file claimed that some systemd units are created "from other
configuration". It should have read "from other configuration files".

Co-authored-by: Nozz <nozolo90@gmail.com>
2 years agoMerge pull request #20186 from keszybz/coverity-fixes
Luca Boccassi [Fri, 9 Jul 2021 20:15:08 +0000 (21:15 +0100)] 
Merge pull request #20186 from keszybz/coverity-fixes

Coverity fixes

2 years agotree-wide: coccinelle fixes
Frantisek Sumsal [Fri, 9 Jul 2021 11:15:01 +0000 (13:15 +0200)] 
tree-wide: coccinelle fixes

Yet another batch of Coccinelle fixes.

2 years agoMerge pull request #20185 from mrc0mmand/ci-tweaks
Frantisek Sumsal [Fri, 9 Jul 2021 18:21:59 +0000 (20:21 +0200)] 
Merge pull request #20185 from mrc0mmand/ci-tweaks

test: assorted test tweaks to address flakiness

2 years agoMerge pull request #20157 from keszybz/numerical-uids-in--M
Luca Boccassi [Fri, 9 Jul 2021 15:58:45 +0000 (16:58 +0100)] 
Merge pull request #20157 from keszybz/numerical-uids-in--M

Allow numerical UIDs in systemctl -M uid@ and similar

2 years agocreds: fix leak of arg_tpm2_device 20186/head
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 13:29:47 +0000 (15:29 +0200)] 
creds: fix leak of arg_tpm2_device

IIUC, "auto" is the same as NULL. There is no need to strdup() anything.

Coverity CID#1458113.

2 years agotest: make the strace check a bit more clever 20185/head
Frantisek Sumsal [Fri, 9 Jul 2021 13:22:41 +0000 (15:22 +0200)] 
test: make the strace check a bit more clever

We still sometimes try to grep an empty strace log because strace is not
yet properly initialized. Let's make the check a bit clever and wait
until strace is attached to PID 1 by checking the `TracerPid` field in
`/proc/1/status`.

2 years agonetworkd: add shared parser for mud urls
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 13:01:00 +0000 (15:01 +0200)] 
networkd: add shared parser for mud urls

The same buggy code was triplicated…

2 years agocreds: drop unnecessary initialization
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:45:41 +0000 (14:45 +0200)] 
creds: drop unnecessary initialization

Coverity also thinks a leak happens here, CID #1458112.
This seems wrong, but let's add an assert, maybe that'll help.

2 years agocore: drop unnecessary initialization
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:38:23 +0000 (14:38 +0200)] 
core: drop unnecessary initialization

cunescape() sets output on success, so initialization is not necessary. There
was no comment, but I think they may have been added because the compiler
wasn't convinced that the return value is non-negative on success. It could
have been confused by the int return type on escape*(), which was changed by
the one of preceeding commits to ssize_t, or by the length calculation, so add
an assert to help the compiler.

For some reason coverity thinks the output can be leaked here (CID #1458111).
I don't see how.

2 years agoxdg-autostart: minor refactoring
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:31:04 +0000 (14:31 +0200)] 
xdg-autostart: minor refactoring

We can't say free_and_replace(exec_split[n++], quoted), because the the
argument is evaluated multiple times. But I think that this form is
still easier to read.

2 years agonspawn: inline one iterator variable declaration
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 12:30:15 +0000 (14:30 +0200)] 
nspawn: inline one iterator variable declaration

2 years agotree-wide: make cunescape*() functions return ssize_t
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 11:27:03 +0000 (13:27 +0200)] 
tree-wide: make cunescape*() functions return ssize_t

Strictly speaking, we are returning the size of a memory chunk of
arbitrary size, so ssize_t is more appropriate than int.

2 years agobasic/escape: use _cleanup_ in one more place
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 11:31:00 +0000 (13:31 +0200)] 
basic/escape: use _cleanup_ in one more place

Also, let's not use 'r' for a char*.

2 years agotest: strip binaries by default
Frantisek Sumsal [Fri, 9 Jul 2021 12:59:11 +0000 (14:59 +0200)] 
test: strip binaries by default

Since 23f8e01 we always kept binaries unstripped, since $STRIP_BINARIES
is unset by default.

2 years agotest: bump the test timeout to give ldconfig.service enough time to finish
Frantisek Sumsal [Fri, 9 Jul 2021 12:44:38 +0000 (14:44 +0200)] 
test: bump the test timeout to give ldconfig.service enough time to finish

Sometimes the ldconfig.service might take a bit longer to finish,
causing spurious test timeouts:

```
[ 1025.858923] systemd[24]: ldconfig.service: Executing: /sbin/ldconfig -X
...
[ 1043.883620] systemd[1]: ldconfig.service: Main process exited, code=exited, status=0/SUCCESS (success)
...
Trying to halt container. Send SIGTERM again to trigger immediate
termination.
Container TEST-52-HONORFIRSTSHUTDOWN terminated by signal KILL.
E: Test timed out after 20s
```

2 years agodocs: improve wording when mentioning the acronym "ESP"
nl6720 [Fri, 9 Jul 2021 09:56:54 +0000 (12:56 +0300)] 
docs: improve wording when mentioning the acronym "ESP"

"ESP" is "EFI system partition", so "ESP partition" is redundant.