Commit Graph
80024 Commits
Author SHA1 Message Date
Michal Koutný ca82f0cbe2 test-cgroup-util: Check return values
The test is supposed to check a battery of cgroup helpers on each
process found but it doesn't literally check anything besides presence
of procfs. (One can visually check printed output only. Introduction in
aff38e74bd ("nspawn: suffix the nspawn cgroups with ".nspawn"").)

Make some assumptions about visible processes and turn the test into
testing that systemd helpers can deal with whatever process they find on
the SUT.

Reported by Coverity and
Fixes CID#1587767
2025-03-12 10:31:23 +01:00
Yu Watanabe 1f5d8a6132 hostname: fix typo
Follow-up for af9c45d5b6.
2025-03-12 06:26:56 +09:00
Yu Watanabe ced634a62d resolve question marks in /etc/hostname to characters hashed from machine ID (#36647)
So I have a bunch of particle os instances around, that I frequently
factory reset. and it's confusing, since they all have the same name.
Let's do something about this, and extend the hostname setup logic a bit
to deal better with "cattle" rather than "pet" deployments.
Specifically: if a hostname in /etc/hostname contains a bunch of
question marks we'll replace it with hex chars hashed from the machine
id.

This allows us to do something like this:

hostnamectl set-hostname --static 'funky-????-????-???'

and we'll end up with a hostname like `funky-baf4-b653-e230`
2025-03-12 04:50:33 +09:00
Yu Watanabe f3580b6807 mountfsd: add complete varlink introspection comments (#36703) 2025-03-12 04:48:12 +09:00
Lennart Poettering 5721b9bc46 update TODO 2025-03-11 18:20:31 +01:00
Lennart Poettering 0ecfcc9790 mountfsd: also return suggested mount point paths for the returned partitions
When mounting a disk image we return a bunch of mount fds referencing
the various partitions in the disk, along with some metadata about them.
One key metadata field is the "designator" which is supposed to tell
clients what is what, and where to mount it.

Let's make this more explicit: let's also include the literal relative
path where each mount shall be placed, to simplify implementations of
clients that do not care about the concept of designators.
2025-03-11 18:20:31 +01:00
Lennart Poettering 00c17ad5cf mountfsd: complete varlink introspection comments 2025-03-11 18:20:31 +01:00
Lennart Poettering 16771b505e update TODO 2025-03-11 18:19:24 +01:00
Lennart Poettering 06967d4049 update TODO 2025-03-11 18:01:42 +01:00
Lennart Poettering f1bc816c09 test: add test checking if pattern based hostnames work 2025-03-11 18:01:42 +01:00
Lennart Poettering af9c45d5b6 hostname: support that /etc/hostname contains ??? as wildcards to be replaced by hash value from /etc/machine-id 2025-03-11 18:01:42 +01:00
Lennart Poettering 98b7c5e2f2 basic: move gethostname_full() from basic/hostname-util.c → shared/hostname-setup.c
In one of the next commits we'd like to introduce a concept of
optionally hashing the hostname from the machine ID. For that we we need
to optionally back gethostname_full() by code involving sd-id128, hence
let's move it from src/basic/ to src/shared/, since only there we are
allowed to use our public APIs.
2025-03-11 17:54:44 +01:00
Lennart Poettering 338553715b update TODO 2025-03-11 17:19:32 +01:00
David Tardon 536c18e5c3 bus-polkit: shortcut auth. after first denial
A D-Bus/Varlink method can issue PolicyKit auth. requests for multiple
actions; in this case the method is expected to fail on the first one
that is not allowed. This is enforced by asserts in
async_polkit_read_reply(), but that's a wrong place for the check for
two reasons:

1. it doesn't allow to get a meaningful stack trace;
2. sending the query to polkit is already a pointless exercise.

Let's do the check in *_verify_polkit_async_full() and don't send
anything to PolicyKit in that case.

Inspired by https://bugzilla.redhat.com/show_bug.cgi?id=2349594 .
2025-03-11 17:18:12 +01:00
Ivan Kruglov cd20d48c69 docs: clarify userns mapping when /proc/sys is rw 2025-03-11 13:25:54 +01:00
Lennart Poettering a9178dbdd9 cgroup-util: Handle capsule@ paths like user@ paths (#36664)
The capsule instances are related to user instances, so treat them
equally to user@.service when handling cgroup paths. This also saves us
from polluting public libsystemd API with variant for capsules too.

Fix: https://github.com/systemd/systemd/issues/36098
2025-03-11 12:03:57 +01:00
Lennart Poettering f8a09ace1d core/service: introduce sd_notify() RESTART_RESET=1 for resetting restart counter (#36698) 2025-03-11 12:03:12 +01:00
Mike Yuan fce19eb67f core/main: fix logging of /sbin/init exec failure
Follow-up for 93e19483dc

While at it, avoid duplicate manager_status_printf()
(error_message will be shown in main()).
2025-03-11 12:02:57 +01:00
Yu Watanabe b8790a875e tmpfiles: ignore ENOENT when file is removed during setting parmission and friends
After a file matches with a glob pattern, the file may be removed or
renamed before opening it. Let's ignore the error in such case.

Fixes #30938.
2025-03-11 18:52:28 +09:00
Lennart Poettering a0d8484eeb update TODO 2025-03-11 10:48:40 +01:00
Yu Watanabe 2373397c41 udev: reread partition table and trigger synthetic change events in child process (#36685) 2025-03-11 18:43:43 +09:00
Michal Koutný 6c5703f9bc cgroup-util: Handle capsule@ paths like user@ paths
The capsule instances are related to user instances, so treat them
equally to user@.service when handling cgroup paths. This also saves us
from polluting public libsystemd API with variant for capsules too.

Fix: #36098
2025-03-11 10:37:19 +01:00
Mike Yuan c139ac7f53 TODO: support RESTART_RESET=1 in journal-upload 2025-03-11 00:44:44 +01:00
Mike Yuan 406aeb5da6 core/service: introduce sd_notify() RESTART_RESET=1 for resetting restart counter
We have RestartMaxDelaySec= + RestartSteps= to exponentially increase
auto restart durations, but it currently cannot be reset by the service
itself, which makes it sometimes awkward to use. A typical pattern
in real life is that a service was once down (e.g. due to temporary
network interruption) and multiple restarts were attempted. Then,
future restarts would always wait for increated amount of time based on
RestartMaxDelaySec=, even after the original problem got resolved.
Such "persistence" could result in longer unavailablity than there
should be for failures that come later.
(C.f. https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdResettingUnitBackoff)

Let's introduce a new sd_notify() notification for resetting the restart
counter. There were discussions about making this timer-based, but I think
it's more flexible to leave the decision-making to the service. This enables
them to do a combination of N successful requests + uptime check for instance.
2025-03-11 00:44:44 +01:00
Mike Yuan a364ebd46d core/unit: disable unit debug invocation in generic unit_reset_failed() 2025-03-10 23:59:31 +01:00
Yu Watanabe bb3ad7b2f1 udev: use ERRNO_IS_NEG_* where appropriate (#36690)
Follow-up for f8825c1364.
2025-03-10 23:51:41 +01:00
Yu Watanabe 9c47b1527e udev: scan partitions and trigger synthetic change events in child process
Rereading partition table may take longer on slow disk. The main process
should not be blocked by the operation. Let's fork a child process and
do that on the child.

Prompted by #36624 and #36269.
2025-03-11 05:55:51 +09:00
Yu Watanabe ee9ff3902b udev: split out synthesize_change_all() from synthesize_change()
No functional change. Preparation for later change.
2025-03-11 05:55:51 +09:00
Antonio Alvarez Feijoo cef2181cda umount: do not move busy network mounts
If a network mount returns EBUSY on umount, the logic introduced in
6dc68a00cf causes shutdown to hang indefinitely on
`fstatat()` (i.e., within `is_dir(m->path, true)`). Hence, skip this logic for
network mounts (following the same motivation we use to skip read-only mounts in
this kind of file systems).

Fixes 6dc68a00cf
2025-03-11 05:53:31 +09:00
Yu Watanabe 63b331517e nsresourced,vmspawn,mountfsd: various smaller fixes (#36689) 2025-03-11 05:50:04 +09:00
Yu Watanabe c24148451a event-util: move event_source_hash_ops to event-util 2025-03-11 05:48:19 +09:00
Lennart Poettering abec5cdd56 nsresourced,mountfsd: set userdata pointer via varlink_server_new() 2025-03-10 16:41:45 +01:00
Lennart Poettering 0d4f38732b vmspawn: properly exit in vmspawn child on failure 2025-03-10 16:41:43 +01:00
Lennart Poettering e267f42d91 nsresourced: fix initialization of netns_fd_idx 2025-03-10 16:41:40 +01:00
Lennart Poettering 5dc4a3f4c2 nsresourced: clear up some type confusion
We settle on the types the backend implementation in
userns-registry.[ch] uses too. i.e. uid_t/gid_t for the bases, and
uint32_t for the uid range sizes.
2025-03-10 16:41:38 +01:00
Lennart Poettering b74a554def nsresourced: permit numeric uid/gid also be specified as strings 2025-03-10 16:41:36 +01:00
Lennart Poettering 869bf7282b nsresourced: fix offset
Follow-up for: ee6fd7ef82
2025-03-10 16:41:33 +01:00
NetSysFire 1f0e4af329 systemd.exec(5): RestrictAddressFamilies: mention address_families(7) 2025-03-11 00:00:55 +09:00
Yu Watanabe a5c11722e6 run: declare ARG_STDIO_XYZ like a flag
Then, we can easily handle the assignment when both --pipe and
--pty/--pty-late are specified.
No functional change, just a refactoring.
2025-03-10 22:34:52 +09:00
Yu Watanabe ad338e0fd5 vmspawn: fix typo
Follow-up for ef430b84e9.
2025-03-10 18:12:51 +09:00
Yu Watanabe 2792b1181f meson: bump required minimum version to 0.62.0 (#36610)
- bump the requred minimum version of meson to 0.62.0,
- use install_symlink(), which is supported since meson-0.61.0,
- use more features provided by newer meson with careful
conditionalization.

Follow-up for 8442ac9c02.
Closes #35967.
2025-03-10 07:51:28 +09:00
Matteo Croce f06e6d19c0 network: add log messages when a route can't be updated
Sometimes networkd removes a route, based on route_can_update() verdict.
Add some debug messages to better understand whi this decision has been made.
2025-03-10 05:39:49 +09:00
Mike Yuan 8d04b8198d docs: reference cgroup v1 as historical and unsupported 2025-03-10 05:24:19 +09:00
Lennart Poettering ef430b84e9 vmspawn: optionally grow image 2025-03-10 03:57:46 +09:00
Yu Watanabe 37cfab0e82 po: update Japanese translations 2025-03-10 03:35:54 +09:00
Yu Watanabe e2ea2d1349 man: fix typo
Follow-ups for fd0dd2d4bc.
2025-03-10 03:23:47 +09:00
Yu Watanabe 51c086b9cc meson: use more features provided by newer meson
No functional change. Preparation for future bump of required meson
version.
2025-03-10 02:41:40 +09:00
Yu Watanabe c0cc01de8a meson: use install_symlink() where applicable
Now our baseline of meson is 0.62, hence install_symlink() can be used.

Note, install_symlink() implies install_emptydir() for specified
install_dir. Hence, this also drops several unnecessary
install_emptydir() calls.

Note, the function currently does not support 'relative' and 'force' flags,
so several 'ln -frsT' inline calls cannot be replaced.
2025-03-10 02:41:40 +09:00
Yu Watanabe ff697bb909 meson: invert version check condition to magically suppress warning
Then, it works with --fatal-meson-warnings.
2025-03-10 02:41:40 +09:00
Yu Watanabe 5506aff98d test-network: replace symlink to 99-default.link with a copy
Then, we can drop ugly workaround in meson.build.
The .link file is not necessarily synced with 99-default.link.
Also, 99-default.link is not updated so frequently.
Let's manually sync it when necessary.
2025-03-10 02:41:40 +09:00