]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
18 months agotree-wide: use -EBADF for fd initialization
Zbigniew Jędrzejewski-Szmek [Mon, 19 Dec 2022 12:07:42 +0000 (13:07 +0100)] 
tree-wide: use -EBADF for fd initialization

-1 was used everywhere, but -EBADF or -EBADFD started being used in various
places. Let's make things consistent in the new style.

Note that there are two candidates:
EBADF 9 Bad file descriptor
EBADFD 77 File descriptor in bad state

Since we're initializating the fd, we're just assigning a value that means
"no fd yet", so it's just a bad file descriptor, and the first errno fits
better. If instead we had a valid file descriptor that became invalid because
of some operation or state change, the other errno would fit better.

In some places, initialization is dropped if unnecessary.

18 months agosd-event: never pass negative errnos as signalfd to signalfd
Zbigniew Jędrzejewski-Szmek [Mon, 19 Dec 2022 13:36:08 +0000 (14:36 +0100)] 
sd-event: never pass negative errnos as signalfd to signalfd

We treat any negative value as "invalid fd", but signalfd only
accepts -1.

18 months agosocket-proxyd: do not hardcode -1 in a check for fd validity
Zbigniew Jędrzejewski-Szmek [Mon, 19 Dec 2022 13:35:05 +0000 (14:35 +0100)] 
socket-proxyd: do not hardcode -1 in a check for fd validity

18 months agoMerge pull request #25784 from poettering/bootctl-split
Lennart Poettering [Mon, 19 Dec 2022 13:37:52 +0000 (14:37 +0100)] 
Merge pull request #25784 from poettering/bootctl-split

bootctl: split up bootctl.c into multiple files

18 months agounit: use underbar for module name
Yu Watanabe [Thu, 15 Dec 2022 19:02:25 +0000 (04:02 +0900)] 
unit: use underbar for module name

For consistency with src/core/unit.c.

18 months agobootctl: split out "install" verb too 25784/head
Lennart Poettering [Mon, 19 Dec 2022 10:42:15 +0000 (11:42 +0100)] 
bootctl: split out "install" verb too

18 months agobootctl: split out "status" verb too
Lennart Poettering [Mon, 19 Dec 2022 10:04:17 +0000 (11:04 +0100)] 
bootctl: split out "status" verb too

18 months agobootctl: split out "set-efivar" verbs, too
Lennart Poettering [Fri, 16 Dec 2022 17:51:10 +0000 (18:51 +0100)] 
bootctl: split out "set-efivar" verbs, too

18 months agobootctl: also split out 'systemd-efi-options' verb
Lennart Poettering [Fri, 16 Dec 2022 17:45:55 +0000 (18:45 +0100)] 
bootctl: also split out 'systemd-efi-options' verb

18 months agobootctl: split out random seed verb, too
Lennart Poettering [Fri, 16 Dec 2022 17:42:39 +0000 (18:42 +0100)] 
bootctl: split out random seed verb, too

18 months agobootctl: let's start splitting up bootctl like we did for systemctl and others
Lennart Poettering [Fri, 16 Dec 2022 17:27:06 +0000 (18:27 +0100)] 
bootctl: let's start splitting up bootctl like we did for systemctl and others

18 months agoMerge pull request #25779 from bluca/journa_remote_vacuum
Yu Watanabe [Mon, 19 Dec 2022 00:44:04 +0000 (09:44 +0900)] 
Merge pull request #25779 from bluca/journa_remote_vacuum

journal-remote: follow-ups for #25076

18 months agojournal-remote: fix memory leak on initialization error 25779/head
Luca Boccassi [Sun, 18 Dec 2022 10:58:37 +0000 (10:58 +0000)] 
journal-remote: fix memory leak on initialization error

Follow-up for f12b399dd6362a03379cb769954ebfb9972236ed from
https://github.com/systemd/systemd/pull/25076

CID#1501550

18 months agojournal-remote: fix initialization of vacuum metrics
Luca Boccassi [Sun, 18 Dec 2022 10:51:36 +0000 (10:51 +0000)] 
journal-remote: fix initialization of vacuum metrics

Follow-up for f12b399dd6362a03379cb769954ebfb9972236ed from
https://github.com/systemd/systemd/pull/25076

CID#1501551

18 months agomeson: fix cross-compilation of LONG_MAX
asavah [Sat, 17 Dec 2022 16:00:56 +0000 (17:00 +0100)] 
meson: fix cross-compilation of LONG_MAX

https://github.com/systemd/systemd/pull/25618#issuecomment-1355019553

18 months agovacuum journal remote (#25076)
berenddeschouwer [Sat, 17 Dec 2022 13:54:16 +0000 (15:54 +0200)] 
vacuum journal remote (#25076)

* Support vacuuming for journal-remote

Co-authored-by: Berend De Schouwer <berend@deschouwer.co.za>
18 months agoMerge pull request #25221 from enr0n/nic-rename-fallback
Luca Boccassi [Sat, 17 Dec 2022 13:51:39 +0000 (14:51 +0100)] 
Merge pull request #25221 from enr0n/nic-rename-fallback

udev: set link alternative name if link is already up during rename

18 months agoMerge pull request #25387 from yuwata/core-fix-gc-logic
Luca Boccassi [Sat, 17 Dec 2022 13:49:21 +0000 (14:49 +0100)] 
Merge pull request #25387 from yuwata/core-fix-gc-logic

core: fix logic of merging units

18 months agoAdd basic systemctl edit test
наб [Tue, 22 Nov 2022 04:14:01 +0000 (05:14 +0100)] 
Add basic systemctl edit test

18 months agoTODO
Lennart Poettering [Fri, 16 Dec 2022 10:42:11 +0000 (11:42 +0100)] 
TODO

18 months agotest: systemd-mount --list and systemd-umount requires the device is initialized...
Yu Watanabe [Thu, 15 Dec 2022 18:04:22 +0000 (03:04 +0900)] 
test: systemd-mount --list and systemd-umount requires the device is initialized by udevd

Fixes #25674.

18 months agoman/systemd-oomd.service: Document command line options
Jade Lovelace [Wed, 7 Dec 2022 19:34:22 +0000 (11:34 -0800)] 
man/systemd-oomd.service: Document command line options

Previously these were not written down. This PR depends on #25670, since
`--dry-run` prints at debug level in `main`, which is surprising
behaviour.

18 months agoMerge pull request #25487 from poettering/systemctl-edit-newline-fix
Lennart Poettering [Thu, 15 Dec 2022 21:22:32 +0000 (22:22 +0100)] 
Merge pull request #25487 from poettering/systemctl-edit-newline-fix

systemctl: simplify trim_edit_markers()

18 months agoImplement SYSTEMD_HOME_MKFS_OPTIONS_* envvars to configure mkfs options for homed...
Aidan Dang [Sat, 10 Dec 2022 10:58:27 +0000 (21:58 +1100)] 
Implement SYSTEMD_HOME_MKFS_OPTIONS_* envvars to configure mkfs options for homed LUKS directories

18 months agorepart: Always derive fs/luks UUIDs from generated partition UUID
Daan De Meyer [Thu, 15 Dec 2022 14:06:40 +0000 (14:06 +0000)] 
repart: Always derive fs/luks UUIDs from generated partition UUID

When generating verity partitions, we only know the partition UUID
of the verity data and hash partition after doing the verity
formatting. This means we can't use the verity partition UUID as
input for deriving the filesystem/luks UUIDs. Currently, we derive
the filesystem/luks UUID from the null UUID instead, which isn't
ideal. Instead, let's always generate a partition UUID and use it
to derive the fs/luks UUIDs, but only use it as the actual partition
UUID if we're not doing verity for the partition.

18 months agopcrphase: gracefully exit if TPM2 support is incomplete
Lennart Poettering [Thu, 15 Dec 2022 17:07:20 +0000 (18:07 +0100)] 
pcrphase: gracefully exit if TPM2 support is incomplete

If everything points to the fact that TPM2 should work, but then the
driver fails to initialize we should handle this gracefully and not
cause failing services all over the place.

Fixes: #25700
18 months agotest: show and check almost all journal entries since the relevant command being...
Yu Watanabe [Thu, 15 Dec 2022 16:11:39 +0000 (01:11 +0900)] 
test: show and check almost all journal entries since the relevant command being invoked

For some reasons, journal timestamps from other sources sometimes
inconsistent. For example,
```
$ journalctl --file system.journal -o short-monotonic -u resmontest.service
[ 1112.168109] ns1.unsigned.test resolvectl[419]: → Q: ns1.unsigned.test IN AAAA
[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← S: success
[ 1112.168109] ns1.unsigned.test resolvectl[419]: → Q: ns1.unsigned.test IN A
[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← S: success
[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← A: ns1.unsigned.test IN A 10.0.0.1
[ 1112.171961] ns1.unsigned.test systemd[1]: resmontest.service: Failed to load configuration: No such file or directory
[ 1112.172223] ns1.unsigned.test systemd[1]: resmontest.service: Trying to enqueue job resmontest.service/start/fail
[ 1112.179866] ns1.unsigned.test systemd[1]: resmontest.service: Installed new job resmontest.service/start as 312
[ 1112.179894] ns1.unsigned.test systemd[1]: resmontest.service: Enqueued job resmontest.service/start as 312
[ 1112.180389] ns1.unsigned.test systemd[1]: resmontest.service: Will spawn child (service_enter_start): /usr/bin/resolvectl
[ 1112.180418] ns1.unsigned.test systemd[1]: resmontest.service: Passing 0 fds to service
[ 1112.180447] ns1.unsigned.test systemd[1]: resmontest.service: About to execute /usr/bin/resolvectl monitor
[ 1112.180477] ns1.unsigned.test systemd[1]: resmontest.service: Forked /usr/bin/resolvectl as 419
[ 1112.180619] ns1.unsigned.test systemd[1]: resmontest.service: Changed dead -> start
[ 1112.180651] ns1.unsigned.test systemd[1]: Starting resmontest.service...
[ 1112.180799] ns1.unsigned.test systemd[419]: resmontest.service: Kernel keyring access prohibited, ignoring.
[ 1112.180895] ns1.unsigned.test systemd[419]: resmontest.service: Executing: /usr/bin/resolvectl monitor
[ 1112.181383] ns1.unsigned.test systemd[1]: resmontest.service: Got notification message from PID 419 (READY=1)
[ 1112.181413] ns1.unsigned.test systemd[1]: resmontest.service: Changed start -> running
[ 1112.181441] ns1.unsigned.test systemd[1]: resmontest.service: Job 312 resmontest.service/start finished, result=done
[ 1112.181469] ns1.unsigned.test systemd[1]: Started resmontest.service.
```
In such case, `journalctl -f` may not show the entries what we are interested in.

Fixes #25749. (At least, workarond for the issue.)

18 months agonetwork: wifi: check SSID when AP interfaces go up
Alvin Šipraga [Wed, 7 Dec 2022 15:43:06 +0000 (16:43 +0100)] 
network: wifi: check SSID when AP interfaces go up

When an AP goes up, the kernel may emit a netlink event indicating that
the interface has gained carrier. In that event, we should check if the
SSID has changed before attempting to reconfigure. Not doing so means
that the link->ssid member is not updated, leading to a potential
mismatch if some of the .network configurations match on SSID=.

There are however scenarios where the above heuristic is not enough.
Specifically, if the interface carrier state flip-flops within a short
enough interval, the internal throttling of netlink events inside the
kernel may suppress intermediate linkdown+linkup events (cf. Linux
net/core/link_watch.c). So there is no linkup event to react on.

To improve on the latter scenario, it is proposed to make newer kernels
emit an NL80211_CMD_START_AP multicast event when an AP goes up. This
event will not be dropped by link_watch. systemd-networkd can then react
to such events as well, and optionally reconfigure the link if the SSID
has changed. This will only work with newer kernels though.

18 months agocore/unit: fix log message 25387/head
Yu Watanabe [Tue, 15 Nov 2022 13:59:01 +0000 (22:59 +0900)] 
core/unit: fix log message

As you can see in the below, the dropped dependency Before=issue-24990.service
is not logged, but the dependency Before=test1.service which is not owned by
the units generated by the TEST-26 is logged.

Before:
systemd[1]: issue-24990.service: Dependency After=test1.service dropped, merged into issue-24990.service
systemd[1]: issue-24990.service: Dependency Before=test1.service dropped, merged into issue-24990.service

After:
systemd[1]: issue-24990.service: Dependency After=test1.service is dropped, as test1.service is merged into issue-24990.service.
systemd[1]: issue-24990.service: Dependency Before=issue-24990.service in test1.service is dropped, as test1.service is merged into issue-24990.service.

18 months agoman: add two signature key example to systemd-measure
Lennart Poettering [Thu, 15 Dec 2022 13:48:08 +0000 (14:48 +0100)] 
man: add two signature key example to systemd-measure

@keszybz asked for an example with --append= used in the systemd-measure
man page. Here it is.

As requested: https://github.com/systemd/systemd/pull/25224#pullrequestreview-1190709772

18 months agosystemctl: don't unlink non-existing temporary files 25487/head
Lennart Poettering [Thu, 24 Nov 2022 13:59:25 +0000 (14:59 +0100)] 
systemctl: don't unlink non-existing temporary files

18 months agosystemctl: if we edit a single file only, jump to the right line
Lennart Poettering [Tue, 22 Nov 2022 16:14:51 +0000 (17:14 +0100)] 
systemctl: if we edit a single file only, jump to the right line

18 months agosystemctl: stop using basename() at one more place
Lennart Poettering [Tue, 22 Nov 2022 17:46:20 +0000 (18:46 +0100)] 
systemctl: stop using basename() at one more place

18 months agosystemctl: line break string where the newlines are
Lennart Poettering [Tue, 22 Nov 2022 17:46:01 +0000 (18:46 +0100)] 
systemctl: line break string where the newlines are

18 months agosystemctl: minor modernizations/simplifications
Lennart Poettering [Tue, 22 Nov 2022 16:13:36 +0000 (17:13 +0100)] 
systemctl: minor modernizations/simplifications

18 months agosystemctl: simplify trim_edit_markers()
Lennart Poettering [Tue, 22 Nov 2022 15:22:41 +0000 (16:22 +0100)] 
systemctl: simplify trim_edit_markers()

This is not performance sensitive, don#t try to be smart with realloc()

Follow-up for: #25305
Fixes: #25303
18 months agotest: fix typo
Yu Watanabe [Thu, 15 Dec 2022 16:38:08 +0000 (01:38 +0900)] 
test: fix typo

18 months agoMerge pull request #25756 from yuwata/test-resolve-1
Yu Watanabe [Thu, 15 Dec 2022 15:53:52 +0000 (00:53 +0900)] 
Merge pull request #25756 from yuwata/test-resolve-1

test: several cleanups for TEST-75-RESOLVE

18 months agoMerge pull request #25718 from yuwata/locale-cleanups
Yu Watanabe [Thu, 15 Dec 2022 15:51:13 +0000 (00:51 +0900)] 
Merge pull request #25718 from yuwata/locale-cleanups

locale: avoid TOCTOU in reading config files

18 months agotest-network: add a test for renaming device to current altname 25221/head
Nick Rosbrook [Wed, 7 Dec 2022 17:28:28 +0000 (12:28 -0500)] 
test-network: add a test for renaming device to current altname

18 months agomkosi: work around a file conflict between systemd and systemd-boot
Frantisek Sumsal [Thu, 15 Dec 2022 12:52:52 +0000 (13:52 +0100)] 
mkosi: work around a file conflict between systemd and systemd-boot

18 months agorepart: Use "defer" in docs instead of "skip"
Daan De Meyer [Thu, 15 Dec 2022 14:27:08 +0000 (14:27 +0000)] 
repart: Use "defer" in docs instead of "skip"

18 months agosd-netlink: add a test for rtnl_set_link_name()
Nick Rosbrook [Tue, 22 Nov 2022 22:01:47 +0000 (17:01 -0500)] 
sd-netlink: add a test for rtnl_set_link_name()

Add a test that verifies a deleted alternative name is restored on error
in rtnl_set_link_name().

18 months agoudev: attempt device rename even if interface is up
Nick Rosbrook [Fri, 2 Dec 2022 20:35:25 +0000 (15:35 -0500)] 
udev: attempt device rename even if interface is up

Currently rename_netif() will not attempt to rename a device if it is
already up, because the kernel will return -EBUSY unless live renaming
is allowed on the device. This restriction will be removed in a future
kernel version [1].

To cover both cases, always attempt to rename the interface and return 0
if we get -EBUSY.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=bd039b5ea2a9

18 months agosd-netlink: restore altname on error in rtnl_set_link_name
Nick Rosbrook [Wed, 2 Nov 2022 09:36:14 +0000 (05:36 -0400)] 
sd-netlink: restore altname on error in rtnl_set_link_name

If a current alternative name is to be used to rename a network
interface, the alternative name must be removed first. If interface
renaming fails, restore the alternative name that was deleted if
necessary.

18 months agoManager: also log caller of daemon-reexec
Luca Boccassi [Thu, 15 Dec 2022 12:20:28 +0000 (12:20 +0000)] 
Manager: also log caller of daemon-reexec

18 months agosd-netlink: do not swap old name and alternative name
Nick Rosbrook [Fri, 2 Dec 2022 20:26:18 +0000 (15:26 -0500)] 
sd-netlink: do not swap old name and alternative name

Commit 434a348380 ("netlink: do not fail when new interface name is
already used as an alternative name") added logic to set the old
interface name as an alternative name, but only when the new name is
currently an alternative name. This is not the desired outcome in most
cases, and the important part of this commit was to delete the new name
from the list of alternative names if necessary.

18 months agoudev/net: allow new link name as an altname before renaming happens
Nick Rosbrook [Wed, 2 Nov 2022 15:05:01 +0000 (11:05 -0400)] 
udev/net: allow new link name as an altname before renaming happens

When configuring a link's alternative names, the link's new name to-be
is not allowed to be included because interface renaming will fail if
the new name is already present as an alternative name. However,
rtnl_set_link_name will delete the conflicting alternative name before
renaming the device, if necessary.

Allow the new link name to be set as an alternative name before the
device is renamed. This means that if the rename is later skipped (i.e.
because the link is already up), then the name can at least still be
present as an alternative name.

18 months agoMerge pull request #24058 from qdeslandes/journald_regex_filtering
Yu Watanabe [Thu, 15 Dec 2022 13:03:33 +0000 (22:03 +0900)] 
Merge pull request #24058 from qdeslandes/journald_regex_filtering

Allow for journald logs filtering on a per-unit basis

18 months agoRevert "test: wait for the monitoring service to become active" 25756/head
Yu Watanabe [Thu, 15 Dec 2022 07:28:52 +0000 (16:28 +0900)] 
Revert "test: wait for the monitoring service to become active"

This reverts commit 5dd34c2604567320707625bc009cf01c3769605f.

`resolvectl monitor` sends notify event, and systemd-run wait for the
service being in active state. Hence, the loop is not necessary.

18 months agotest: suppress echo in monitor_check_rr()
Yu Watanabe [Thu, 15 Dec 2022 06:28:56 +0000 (15:28 +0900)] 
test: suppress echo in monitor_check_rr()

18 months agopackit: drop/replace deprecated directives
Frantisek Sumsal [Thu, 15 Dec 2022 12:14:30 +0000 (13:14 +0100)] 
packit: drop/replace deprecated directives

18 months agorepart: Fix integration test
Daan De Meyer [Thu, 15 Dec 2022 12:01:35 +0000 (12:01 +0000)] 
repart: Fix integration test

18 months agoMerge pull request #25224 from poettering/measure-append
Yu Watanabe [Thu, 15 Dec 2022 12:47:29 +0000 (21:47 +0900)] 
Merge pull request #25224 from poettering/measure-append

add --append= switch to systemd-measure

18 months agoMerge pull request #25735 from yuwata/switch-root-follow-ups
Yu Watanabe [Thu, 15 Dec 2022 12:39:40 +0000 (21:39 +0900)] 
Merge pull request #25735 from yuwata/switch-root-follow-ups

mount-util: several follow-ups for recent mount_switch_root() changes

18 months agohwdb: Fix mount matrix for CSL Panther Tab HD (#25752)
mvzlb [Thu, 15 Dec 2022 10:59:14 +0000 (11:59 +0100)] 
hwdb: Fix mount matrix for CSL Panther Tab HD (#25752)

Commit a76d7aca sets ACCEL_MOUNT_MATRIX to match the device's casing
(landscape) instead of the LCD panel (portrait).

18 months agoupdate TODO 25224/head
Lennart Poettering [Tue, 1 Nov 2022 14:10:47 +0000 (15:10 +0100)] 
update TODO

18 months agotest: add integration test for systemd-measure --append=
Lennart Poettering [Thu, 15 Dec 2022 10:39:33 +0000 (11:39 +0100)] 
test: add integration test for systemd-measure --append=

18 months agomeasure: add --append= switch for merging signatures
Lennart Poettering [Tue, 1 Nov 2022 13:54:47 +0000 (14:54 +0100)] 
measure: add --append= switch for merging signatures

Often it's useful to add multiple signatures in the signature JSON file
to embedd in a single .pcrsig. (For example, a signature by key X for
boot phase "enter-initrd" and one by key Y for
"enter-initrd:leave-initrd" or so). Make this easy, by adding the
ability to append signatures to a previously generated JSON file.

18 months agojson: add helper for adding variant to array suppressing duplicates
Lennart Poettering [Tue, 1 Nov 2022 13:56:44 +0000 (14:56 +0100)] 
json: add helper for adding variant to array suppressing duplicates

18 months agojournal: add integration tests for log filtering 24058/head
Quentin Deslandes [Tue, 13 Sep 2022 15:12:36 +0000 (16:12 +0100)] 
journal: add integration tests for log filtering

Add integration tests for journald's log filtering feature.

18 months agojournal: filter log based on LogFilterPatterns
Quentin Deslandes [Tue, 13 Sep 2022 15:15:13 +0000 (16:15 +0100)] 
journal: filter log based on LogFilterPatterns

Use LogFilterPatterns from the unit's cgroup xattr in order to keep or
discard log messages before writing them to the journal.
When a log message is discarded, it won't be written to syslog, console...
either.

When a native, syslog, or standard output log message is received,
systemd-journald will process it if it matches against at least one
allowed pattern (if any) and none of the denied patterns (if any).

18 months agoCreate hash_ops structure to free keys of type pcre2_code
Quentin Deslandes [Tue, 13 Sep 2022 15:14:52 +0000 (16:14 +0100)] 
Create hash_ops structure to free keys of type pcre2_code

18 months agosystemctl: add support for LogFilterPatterns for show command
Quentin Deslandes [Wed, 14 Sep 2022 17:17:19 +0000 (18:17 +0100)] 
systemctl: add support for LogFilterPatterns for show command

Parse DBus structure send by LogFilterPatterns to print it in systemctl
show.

18 months agojournal: log filtering options support in PID1
Quentin Deslandes [Mon, 7 Nov 2022 19:30:01 +0000 (20:30 +0100)] 
journal: log filtering options support in PID1

Define new unit parameter (LogFilterPatterns) to filter logs processed by
journald.

This option is used to store a regular expression which is carried from
PID1 to systemd-journald through a cgroup xattrs:
`user.journald_log_filter_patterns`.

18 months agoset: add set_make_nulstr
Quentin Deslandes [Mon, 7 Nov 2022 19:25:46 +0000 (20:25 +0100)] 
set: add set_make_nulstr

Add function set_make_nulstr() to create a nulstr out of a set. Behave
the same way as strv_make_nulstr().

18 months agoMerge pull request #25350 from poettering/efi-guid-equal
Lennart Poettering [Thu, 15 Dec 2022 09:24:58 +0000 (10:24 +0100)] 
Merge pull request #25350 from poettering/efi-guid-equal

efi: add efi_guid_equal() helper

18 months agoMerge pull request #25602 from fbuihuu/fix-TEST-73-LOCALE
Yu Watanabe [Thu, 15 Dec 2022 08:47:05 +0000 (17:47 +0900)] 
Merge pull request #25602 from fbuihuu/fix-TEST-73-LOCALE

localed: reload PID1 configuration after modifying /etc/locale.conf

18 months agorepart: Rework Minimize= option settings
Daan De Meyer [Tue, 13 Dec 2022 18:52:18 +0000 (18:52 +0000)] 
repart: Rework Minimize= option settings

Instead of having Minimize= take a boolean let's allow for two
different ways to enable it. "best" means we want the most minimal
image possible, which currently is only possible for read-only
filesystems but can be extended in the future with bisection
to find the most minimal possible size.

We also add "guess", which is the current behavior, where we
populate once and use the sparse size to make a reasonable guess
on a size that fits all the sources without needing to O(log(n))
tries to find the most minimal size.

18 months agomount-util: make mount_switch_root() take a mount propagation flag 25735/head
Yu Watanabe [Wed, 14 Dec 2022 06:38:54 +0000 (15:38 +0900)] 
mount-util: make mount_switch_root() take a mount propagation flag

18 months agomountpoint-util: introduce mount_propagation_flag_is_valid()
Yu Watanabe [Wed, 14 Dec 2022 17:48:59 +0000 (02:48 +0900)] 
mountpoint-util: introduce mount_propagation_flag_is_valid()

18 months agomountpoint-util: rename mount_propagation_flags_to_string() and friends as singular
Yu Watanabe [Wed, 14 Dec 2022 08:52:31 +0000 (17:52 +0900)] 
mountpoint-util: rename mount_propagation_flags_to_string() and friends as singular

18 months agomount-util: mount flag is unsigned long
Yu Watanabe [Wed, 14 Dec 2022 05:58:48 +0000 (14:58 +0900)] 
mount-util: mount flag is unsigned long

18 months agomount-util: drop unnecessary inline attributes
Yu Watanabe [Wed, 14 Dec 2022 06:40:02 +0000 (15:40 +0900)] 
mount-util: drop unnecessary inline attributes

18 months agoMerge pull request #25743 from yuwata/timesync-ipv6
Yu Watanabe [Thu, 15 Dec 2022 03:57:54 +0000 (12:57 +0900)] 
Merge pull request #25743 from yuwata/timesync-ipv6

timesync: ignore IPv6 addresses when the kernel does not support it

18 months agobasic: do not output emojis if not on a proper terminal
Zbigniew Jędrzejewski-Szmek [Wed, 14 Dec 2022 14:39:26 +0000 (15:39 +0100)] 
basic: do not output emojis if not on a proper terminal

$TERM would generally be set if we're connected to a proper graphical terminal
emulator. In all other cases, in particular if $TERM is not set, we almost
certainly are not connected to something that can output emojis. In particular
the text console is unlikely to ever do it correctly.

So let's invert the check, and only write emojis if $TERM is set.

Fixes #25521.

18 months agoMerge pull request #25732 from enr0n/unit-test-machine-id-initialized
Yu Watanabe [Thu, 15 Dec 2022 03:55:04 +0000 (12:55 +0900)] 
Merge pull request #25732 from enr0n/unit-test-machine-id-initialized

unit tests: do not fail when `/etc/machine-id` is empty

18 months agoMerge pull request #25723 from keszybz/generators-tmp
Yu Watanabe [Thu, 15 Dec 2022 03:53:49 +0000 (12:53 +0900)] 
Merge pull request #25723 from keszybz/generators-tmp

Run generators with / ro and /tmp mounted

18 months agoMerge pull request #25693 from yuwata/binfmt
Yu Watanabe [Thu, 15 Dec 2022 03:52:30 +0000 (12:52 +0900)] 
Merge pull request #25693 from yuwata/binfmt

binfmt: several cleanups

18 months agopam: actually align the columns
Zbigniew Jędrzejewski-Szmek [Wed, 14 Dec 2022 21:23:31 +0000 (22:23 +0100)] 
pam: actually align the columns

In 9efb224443d819b7d64ec76cb94c8aa625a8abf2 was supposed to align
them, but for some reason I just added a second space everywhere.

18 months agosystemctl: is-enabled: document the return code change
Mike Yuan [Wed, 14 Dec 2022 16:50:19 +0000 (00:50 +0800)] 
systemctl: is-enabled: document the return code change

Follow-up for #25689

We've added a new output ("not-found") in #25689.

18 months agofstab-generator: use log message that matches reality 25723/head
Zbigniew Jędrzejewski-Szmek [Tue, 13 Dec 2022 13:38:06 +0000 (14:38 +0100)] 
fstab-generator: use log message that matches reality

We *assume* that when /sys is read-only, we're running in a container. But
there can other reasons, for example root is mount ro and nobody has mounted
/sys yet, or somebody forgot to add /sys to the list of filesystem not to
remount ro in a sandbox. So let's actually say what we know instead of assuming.

systemd-fstab-generator was reporting that it's running in a container and I
spent a good few minutes trying to figure out why 'systemd-detect-virt -c'
disagrees, before noticing that it's just checking a different condition.

18 months agotree-wide: use mode=0nnn for mount option
Zbigniew Jędrzejewski-Szmek [Tue, 13 Dec 2022 13:35:56 +0000 (14:35 +0100)] 
tree-wide: use mode=0nnn for mount option

This is an octal number. We used the 0 prefix in some places inconsistently.
The kernel always interprets in base-8, so this has no effect, but I think
it's nicer to use the 0 to remind the reader that this is not a decimal number.

18 months agomanager: execute generators in a mount namespace "sandbox"
Zbigniew Jędrzejewski-Szmek [Tue, 13 Dec 2022 13:32:35 +0000 (14:32 +0100)] 
manager: execute generators in a mount namespace "sandbox"

When generators are executed during early boot, /tmp might not be available
yet. This causes problems with bash, because here-docs don't work. Even
non-shell code can often assume that /tmp is available. This limitation is
known to trip up people, and when the code is tested on a "normal" system,
everything works.

We can solve this nicely, and get another small benefit, by making most of the
file system read-only and "punching holes" for some dirs that should be
writable. The generator code runs with full privileges and can do anything it
wants by writing appropriate systemd units, so it doesn't make much sense to do
any significant sandboxing around generators. But making root read-only is nice
because it can catch stupid mistakes where the generator tries to write to a
wrong path or something like that. We effectively also get a "private /tmp" for
the generators, which protects them against existing files in /tmp.

The path does the following:
when executing generators, we fork, and the child unshares root and makes
it recursively read-only, with the exception of /sys and /run. Error handling
is permissive — if some of this setup fails, we're in the same state as
before the patch.

Fixes #24430.

18 months agoshared: add new safe_fork flag FORK_PRIVATE_TMP
Zbigniew Jędrzejewski-Szmek [Wed, 14 Dec 2022 12:40:53 +0000 (13:40 +0100)] 
shared: add new safe_fork flag FORK_PRIVATE_TMP

If the flag is set, we mount /tmp/ in a way that is suitable for generators and
other quick jobs.

Unfortunately I had to move some code from shared/mount-util.c to
basic/mountpoint-util.c. The functions that are moved are very thin wrappers
around mount(2), so this doesn't actually change much in the code split between
libbasic and libshared.

Implications for the host would be weird if a private mount namespace is not
used, so assert on FORK_NEW_MOUNTNS when the flag is used.

18 months agojournal: skip part of test-journal-interleaving if no machine-id exists 25732/head
Nick Rosbrook [Wed, 14 Dec 2022 15:07:40 +0000 (10:07 -0500)] 
journal: skip part of test-journal-interleaving if no machine-id exists

When executed on a systemd with an empty /etc/machine-id,
test-journal-interleaving fails in test_sequence_numbers_one() when
re-opening the existing "two.journal". This is because opening the
existing journal file with managed_journal_file_open() causes
journal_file_verify_header() to be called. This function tries to
compare the current machine-id to the machine-id in the journal file
header, but does not handle the case where the machine-id is empty or
non-existent.

Check if we have an initialized machine-id before executing this portion
of the test.

18 months agotest-load-fragment: simplify machine-id check
Nick Rosbrook [Tue, 13 Dec 2022 17:25:35 +0000 (12:25 -0500)] 
test-load-fragment: simplify machine-id check

18 months agotest-unit-name: simplify machine-id check
Nick Rosbrook [Tue, 13 Dec 2022 17:22:37 +0000 (12:22 -0500)] 
test-unit-name: simplify machine-id check

18 months agotest-fs-util: skip part of test_chase_symlinks if machine-id is not initialized
Nick Rosbrook [Mon, 12 Dec 2022 19:37:52 +0000 (14:37 -0500)] 
test-fs-util: skip part of test_chase_symlinks if machine-id is not initialized

The part of test_chase_symlink in test-fs-util that calls
sd_id128_get_machine will fail if /etc/machine-id is empty, so skip this
block if the machine-id is not initialized.

18 months agotest-id128: simplify machine-id check
Nick Rosbrook [Mon, 12 Dec 2022 19:35:08 +0000 (14:35 -0500)] 
test-id128: simplify machine-id check

This also ensures that the test is skipped when /etc/machine-id exists,
but is not initialized.

18 months agounit: check more specific path to be written by systemd-binfmt 25693/head
Yu Watanabe [Sat, 10 Dec 2022 02:46:45 +0000 (11:46 +0900)] 
unit: check more specific path to be written by systemd-binfmt

Follow-up for 41807efb1594ae8e71e0255e154ea7d17be2251a.
Replaces #25690.

18 months agobinfmt: check if binfmt is mounted before applying rules
Yu Watanabe [Sat, 10 Dec 2022 02:42:50 +0000 (11:42 +0900)] 
binfmt: check if binfmt is mounted before applying rules

18 months agobinfmt-util: also check if binfmt is mounted in read-write
Yu Watanabe [Sat, 10 Dec 2022 02:32:24 +0000 (11:32 +0900)] 
binfmt-util: also check if binfmt is mounted in read-write

18 months agotimesync: ignore IPv6 addresses when the kernel does not support IPv6 25743/head
Yu Watanabe [Wed, 14 Dec 2022 14:54:11 +0000 (23:54 +0900)] 
timesync: ignore IPv6 addresses when the kernel does not support IPv6

Fixes #25728.

18 months agobinfmt-util: split out binfmt_mounted()
Yu Watanabe [Sat, 10 Dec 2022 02:25:28 +0000 (11:25 +0900)] 
binfmt-util: split out binfmt_mounted()

No functional changes, just refactoring and preparation for later
commits.

18 months agostat-util: introduce fd_is_read_only_fs()
Yu Watanabe [Sat, 10 Dec 2022 02:23:05 +0000 (11:23 +0900)] 
stat-util: introduce fd_is_read_only_fs()

Then, reimplement path_is_read_only_fs() by the function to avoid race.

18 months agoefi: add common implementation for loop finding EFI configuration tables 25350/head
Lennart Poettering [Wed, 14 Dec 2022 17:48:52 +0000 (18:48 +0100)] 
efi: add common implementation for loop finding EFI configuration tables

18 months agoefi: add efi_guid_equal() helper
Lennart Poettering [Fri, 11 Nov 2022 15:05:03 +0000 (16:05 +0100)] 
efi: add efi_guid_equal() helper

18 months agoMerge pull request #25575 from brauner/nspawn.socket_surgery
Lennart Poettering [Wed, 14 Dec 2022 17:36:44 +0000 (18:36 +0100)] 
Merge pull request #25575 from brauner/nspawn.socket_surgery

nspawn: reduce number of sockets

18 months agoMerge pull request #25734 from yuwata/sd-id128
Yu Watanabe [Wed, 14 Dec 2022 17:23:03 +0000 (02:23 +0900)] 
Merge pull request #25734 from yuwata/sd-id128

sd-id128: several followups