]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
4 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.

4 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

4 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.

4 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.

4 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.

4 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

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

4 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().

4 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.

4 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

4 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

4 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

4 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

4 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.

4 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()

4 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.

4 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

4 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

4 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

4 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.

4 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.

4 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).

4 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.

4 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.

4 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

4 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

4 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

4 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.

4 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.

4 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

4 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

4 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.)

4 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

4 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.

4 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.

4 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.

4 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'
```

4 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>
4 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.

4 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>
4 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

4 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.

4 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

4 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

4 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.

4 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`.

4 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…

4 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.

4 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.

4 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.

4 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

4 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.

4 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*.

4 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.

4 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
```

4 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.

4 years agoshared/format-table: fix invalid free
Zbigniew Jędrzejewski-Szmek [Fri, 9 Jul 2021 11:17:16 +0000 (13:17 +0200)] 
shared/format-table: fix invalid free

Coverity CID#1458108.

4 years agosd-bus: allow numerical uids in -M user@.host 20157/head
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 16:02:50 +0000 (18:02 +0200)] 
sd-bus: allow numerical uids in -M user@.host

UIDs don't work well over ssh, but locally or with containers they are OK.
In particular, user@.service uses UIDs as identifiers, and it's nice to be
able to copy&paste that UID for interaction with the user's managers.

4 years agosd-bus: print debugging information if bus_container_connect_socket() fails
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 16:01:03 +0000 (18:01 +0200)] 
sd-bus: print debugging information if bus_container_connect_socket() fails

We would return the errno, but there are many steps, and without some
debugging info it's hard to figure out what exactly failed.

4 years agosd-bus: print quoted commandline when in bus_socket_exec()
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 14:36:49 +0000 (16:36 +0200)] 
sd-bus: print quoted commandline when in bus_socket_exec()

The arguments are where the interesting part is:
src/libsystemd/sd-bus/bus-socket.c:965: sd-bus: starting bus with systemd-run...

src/libsystemd/sd-bus/bus-socket.c:972: sd-bus: starting bus with systemd-run -M.host -PGq --wait -pUser=1000 -pPAMName=login systemd-stdio-bridge "-punix:path=\${XDG_RUNTIME_DIR}/bus"

4 years agocore: use the new quoting helper
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 14:28:19 +0000 (16:28 +0200)] 
core: use the new quoting helper

4 years agobasic/escape: add helper for quoting command lines
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 14:27:51 +0000 (16:27 +0200)] 
basic/escape: add helper for quoting command lines

4 years agonetworkd: minor refactoring 20109/head
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:40:16 +0000 (11:40 +0200)] 
networkd: minor refactoring

4 years agonetworkd: replace one trivial asprintf with xsprintf
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:40:00 +0000 (11:40 +0200)] 
networkd: replace one trivial asprintf with xsprintf

4 years agoshared/killall: replace one trivial asprintf with xsprintf
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:37:44 +0000 (11:37 +0200)] 
shared/killall: replace one trivial asprintf with xsprintf

4 years agotree-wide: do not use (void) asprintf
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 09:37:21 +0000 (11:37 +0200)] 
tree-wide: do not use (void) asprintf

asprintf(3) says that the pointer is "undefined" after a failed call.
In the current glibc implementation it is just NULL. In principle the
call could return a valid pointer with bad contents or something.

We have two styles of error handling: in a majority of cases we would
check the return value, but sometimes we used (void) and relied on the
pointer not being set. In practice both styles should be equivalent,
but gcc doesn't like the second one with -Wunused-result. (Though only
sometimes. E.g. on my F34 box I don't get the same warnings as in CI,
even though the compiler version is very similar and the compilation
options are the same…). It's also nice to be consistent in our code base.
So let's always use the first style of error checking.

4 years agobasic/time-util: indentation
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 13:21:22 +0000 (15:21 +0200)] 
basic/time-util: indentation

4 years agobasic/{time,format}-util: warn when format result is unused
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 13:16:15 +0000 (15:16 +0200)] 
basic/{time,format}-util: warn when format result is unused

Now that anonymous buffers are used in almost all cases, code which
does not use the return value is usually broken.

4 years agomeson: re-enable -Wunused-result with clang
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 13:13:00 +0000 (15:13 +0200)] 
meson: re-enable -Wunused-result with clang

We disabled it in f73fb7b742f294b6d2126afa16001bd2ff6ab461 in response to an
apparent gcc bug. It seems that depending on the combination of optimization
options, gcc still ignores (void). But this seems to work fine with clang, so
let's re-enable the warning conditionally.

4 years agoReplace format_bytes_cgroup_protection with FORMAT_BYTES_CGROUP_PROTECTION
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 08:22:03 +0000 (10:22 +0200)] 
Replace format_bytes_cgroup_protection with FORMAT_BYTES_CGROUP_PROTECTION

4 years agotree-wide: add FORMAT_BYTES_FULL()
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 08:17:16 +0000 (10:17 +0200)] 
tree-wide: add FORMAT_BYTES_FULL()

4 years agocgtop: use anonymous buffers for formatting of bytes and timespans
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:51:23 +0000 (09:51 +0200)] 
cgtop: use anonymous buffers for formatting of bytes and timespans

4 years agobasic/macro: make CONST_MAX(DECIMAL_STR_MAX(…), STRLEN(…)) possible
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:49:56 +0000 (09:49 +0200)] 
basic/macro: make CONST_MAX(DECIMAL_STR_MAX(…), STRLEN(…)) possible

When those two macros were used together in CONST_MAX(), gcc would complain
about a type mismatch. So either DECIMAL_STR_MAX() should be made size_t like
STRLEN(), or STRLEN() be made unsigned.

Since those macros are only usable on arguments of (small) fixed size, any type
should be fine (even char would work…). For buffer size specifications, both
size_t and unsigned are OK. But unsigned was used for DECIMAL_STR_MAX macros
and FORMAT_foo_MAX macros, making STRLEN the only exception, so let's adjust
STRLEN() to be unsigned too.

Also: I don't think this is currently used anywhere, but if any of those macros
were used as an argument to sprintf, size_t would require a cast. ("%*s"
requires an int/unsigned argument.)

4 years agoimport: use SYNTHETIC_ERRNO in one more place
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:14:22 +0000 (09:14 +0200)] 
import: use SYNTHETIC_ERRNO in one more place

4 years agotree-wide: add FORMAT_BYTES()
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jul 2021 07:14:01 +0000 (09:14 +0200)] 
tree-wide: add FORMAT_BYTES()

4 years agoInline some iterator variables
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 19:56:39 +0000 (21:56 +0200)] 
Inline some iterator variables

4 years agotree-wide: add FORMAT_TIMESTAMP_STYLE()
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 19:41:59 +0000 (21:41 +0200)] 
tree-wide: add FORMAT_TIMESTAMP_STYLE()

4 years agoshared/format-table: allocate buffer of sufficient size
Zbigniew Jędrzejewski-Szmek [Mon, 5 Jul 2021 19:29:11 +0000 (21:29 +0200)] 
shared/format-table: allocate buffer of sufficient size

4 years agotree-wide: add FORMAT_TIMESTAMP_RELATIVE()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:43:52 +0000 (12:43 +0000)] 
tree-wide: add FORMAT_TIMESTAMP_RELATIVE()

4 years agotree-wide: add FORMAT_TIMESPAN()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:32:46 +0000 (14:32 +0200)] 
tree-wide: add FORMAT_TIMESPAN()

4 years agosd-journal: add FORMAT_TIMESTAMP_SAFE()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:11:49 +0000 (14:11 +0200)] 
sd-journal: add FORMAT_TIMESTAMP_SAFE()

4 years agotree-wide: use FORMAT_TIMESTAMP()
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 12:11:30 +0000 (14:11 +0200)] 
tree-wide: use FORMAT_TIMESTAMP()

4 years agobasic/time-util: add FORMAT_TIMESTAMP
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jul 2021 10:10:52 +0000 (10:10 +0000)] 
basic/time-util: add FORMAT_TIMESTAMP

This uses the same idea of an anonyous buffer as ETHER_ADDR_TO_STR().

4 years agotest-ether-addr-util: add a simple test that HW_ADDR_TO_STR works with nesting
Zbigniew Jędrzejewski-Szmek [Tue, 29 Jun 2021 13:27:12 +0000 (15:27 +0200)] 
test-ether-addr-util: add a simple test that HW_ADDR_TO_STR works with nesting

It seems to, but I was a bit incredulous… The comment is adjusted to match
the standard.

The trick with a temporary buffer is neat. I wasn't sure if it is valid, but
the standard says so. The test really tests that we are reading the rules right
and that the compiler doesn't do anythign strange or emit an unexpected
warning.

4 years agoMerge pull request #20166 from poettering/fsync-more
Yu Watanabe [Thu, 8 Jul 2021 22:32:01 +0000 (07:32 +0900)] 
Merge pull request #20166 from poettering/fsync-more

various tweaks to existing fsync() helpers, and some new apis

4 years agoMerge pull request #20168 from poettering/signal-util-tweak
Yu Watanabe [Thu, 8 Jul 2021 22:24:43 +0000 (07:24 +0900)] 
Merge pull request #20168 from poettering/signal-util-tweak

generalize SIGINT handling in copy.c

4 years agoMerge pull request #20167 from poettering/format-table-tweaks
Yu Watanabe [Thu, 8 Jul 2021 22:20:49 +0000 (07:20 +0900)] 
Merge pull request #20167 from poettering/format-table-tweaks

format-table: three new features

4 years agodirent-util: no need to bother with fstatat() for "." and ".." to figure out if these...
Lennart Poettering [Fri, 25 Jun 2021 21:47:02 +0000 (23:47 +0200)] 
dirent-util: no need to bother with fstatat() for "." and ".." to figure out if these are dirs

4 years agoblockdev-util: add fd-based APIs for getting backing block device for file
Lennart Poettering [Mon, 8 Mar 2021 22:48:21 +0000 (23:48 +0100)] 
blockdev-util: add fd-based APIs for getting backing block device for file

4 years agopath-util: make path_compare() accept NULL
Lennart Poettering [Thu, 17 Jun 2021 09:05:43 +0000 (11:05 +0200)] 
path-util: make path_compare() accept NULL

4 years agologind: allow binding different operation to reboot key long presses
Yegor Alexeyev [Fri, 11 Jun 2021 22:18:07 +0000 (01:18 +0300)] 
logind: allow binding different operation to reboot key long presses

4 years agoconf-files: rename return parameters ret_xyz
Lennart Poettering [Fri, 25 Jun 2021 21:46:46 +0000 (23:46 +0200)] 
conf-files: rename return parameters ret_xyz

4 years agoMerge pull request #20163 from poettering/repart-root-fix
Lennart Poettering [Thu, 8 Jul 2021 11:06:41 +0000 (13:06 +0200)] 
Merge pull request #20163 from poettering/repart-root-fix

repart: drop duplicate handling of /sysroot/ prefix

4 years agoMerge pull request #19995 from poettering/cred-tool
Lennart Poettering [Thu, 8 Jul 2021 10:59:59 +0000 (12:59 +0200)] 
Merge pull request #19995 from poettering/cred-tool

Add support for encrypted credentials

4 years agorepart: when we can't fit the partitions in, report needed disk size current disk...
Lennart Poettering [Fri, 2 Jul 2021 13:33:35 +0000 (15:33 +0200)] 
repart: when we can't fit the partitions in, report needed disk size current disk size

This improves error output in repart if we can't fit the defined
partitions into the disk image. With this change we'll now show not only
the disk size we need (as before), but also the current one, as well as
the largest free area on disk.

This should make it a bit easier to debug disk space issues that repart
runs into.

4 years agoMount encrypted swap partitions via gpt-auto
Hugo Osvaldo Barrera [Sun, 4 Jul 2021 14:30:20 +0000 (16:30 +0200)] 
Mount encrypted swap partitions via gpt-auto

If the auto-discovered swap partition is LUKS encrypted, decrypt it
automatically.

This aligns with the Discoverable Partitions Specification, though I've
also updated it to explicitly mention that LUKS is now supported here.

Since systemd retries any key already in the kernel keyring, if the swap
partition has the same passphrase as the root partition, the user won't
be prompted a second time for a second passphrase.

See https://github.com/systemd/systemd/issues/20019

4 years agocopy: port over to pop_pending_signal() 20168/head
Lennart Poettering [Thu, 8 Jul 2021 08:38:09 +0000 (10:38 +0200)] 
copy: port over to pop_pending_signal()

4 years agosignal-util: add helper pop_pending_signal()
Lennart Poettering [Thu, 25 Feb 2021 11:11:59 +0000 (12:11 +0100)] 
signal-util: add helper pop_pending_signal()

4 years agoformat-table: teach table_hide_column_from_display() to accept multiple arguments 20167/head
Lennart Poettering [Thu, 4 Mar 2021 21:07:46 +0000 (22:07 +0100)] 
format-table: teach table_hide_column_from_display() to accept multiple arguments

In case we want to hide multiple columns in one go, make that easy.

4 years agoformat-table: add cell type for outputting 64bit values in hex
Lennart Poettering [Wed, 6 Jan 2021 14:51:35 +0000 (15:51 +0100)] 
format-table: add cell type for outputting 64bit values in hex