]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
21 months agobasic: Add some sha256 helper functions 31297/head
Adrian Vovk [Sat, 13 Jan 2024 16:08:12 +0000 (11:08 -0500)] 
basic: Add some sha256 helper functions

Adds a util function to sha256 an open fd (moved from dissect). Also
adds functions to check if a string contains a valid sha256 hash, and
parse it into a sha256 array.

21 months agofundamental: Add overflow-safe math helpers 31296/head
Adrian Vovk [Wed, 17 Jan 2024 19:48:45 +0000 (14:48 -0500)] 
fundamental: Add overflow-safe math helpers

ADD_SAFE/SUB_SAFE/MUL_SAFE do addition/subtraction/multiplication
respectively with an overflow check. If an overflow occurs these return
false, otherwise true. Example: (c = a + b) would become ADD_SAFE(&c, a,
b)

INC_SAFE/DEC_SAFE/MUL_ASSIGN_SAFE are like above but they also reassign
the first argument. Example: (a += b) would become INC_SAFE(&a, b)

21 months agoUse tilde for rc tag versioning
Daan De Meyer [Tue, 13 Feb 2024 13:00:50 +0000 (14:00 +0100)] 
Use tilde for rc tag versioning

tilde sorts lower in the version comparison spec:
https://uapi-group.org/specifications/specs/version_format_specification/

➜  systemd git:(strip) systemd-analyze compare-versions 249\~rc1 249
249\~rc1 < 249
➜  systemd git:(strip) systemd-analyze compare-versions 249-rc1 249
249-rc1 > 249

Also update tools/meson-vcs-tag.sh to use carets instead of hyphens
for the git part of the version as carets are allowed to be part of
a version by pacman while hyphens are not and both sort higher than
a version without the git part.

21 months agopo: Translated using Weblate (Korean)
김인수 [Tue, 13 Feb 2024 09:36:49 +0000 (10:36 +0100)] 
po: Translated using Weblate (Korean)

Currently translated at 100.0% (227 of 227 strings)

Co-authored-by: 김인수 <simmon@nplob.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/ko/
Translation: systemd/main

21 months agoMerge pull request #30380 from keszybz/tmpfiles-dry-run
Lennart Poettering [Tue, 13 Feb 2024 08:45:50 +0000 (09:45 +0100)] 
Merge pull request #30380 from keszybz/tmpfiles-dry-run

Make tmpfiles/sysusers nicer with local files and implement tmpfiles --dry-run

21 months agocryptsetup: Add optional support for linking volume key in keyring.
Ondrej Kozina [Wed, 31 Jan 2024 12:11:21 +0000 (13:11 +0100)] 
cryptsetup: Add optional support for linking volume key in keyring.

cryptsetup 2.7.0 adds feature to link effective volume key in custom
kernel keyring during device activation. It can be used later to pass
linked volume key to other services.

For example: kdump enabled systems installed on LUKS2 device.
This feature allows it to store volume key linked in a kernel keyring
to the kdump reserved memory and reuse it to reactivate LUKS2 device
in case of kernel crash.

21 months agoupdate TODO
Lennart Poettering [Tue, 13 Feb 2024 08:12:49 +0000 (09:12 +0100)] 
update TODO

21 months agoMerge pull request #31271 from fbuihuu/test-69-debugging-improvements
Frantisek Sumsal [Mon, 12 Feb 2024 20:14:43 +0000 (21:14 +0100)] 
Merge pull request #31271 from fbuihuu/test-69-debugging-improvements

Test 69 debugging improvements

21 months agoMerge pull request #31284 from poettering/btrfs-alignment
Lennart Poettering [Mon, 12 Feb 2024 16:50:13 +0000 (17:50 +0100)] 
Merge pull request #31284 from poettering/btrfs-alignment

btrfs: various clean-ups including alignment fixes

21 months agoFix OOMPolicy= version in manpage of systemd.scope
cunshunxia [Wed, 24 Jan 2024 03:23:19 +0000 (11:23 +0800)] 
Fix OOMPolicy= version in manpage of systemd.scope

OOMPolicy in scope units is separately supported in
version v253, so I think it cannot be directly used
in the manpage with the version from the service.

fix:#30836

21 months agoMerge pull request #31162 from poettering/tint-tweaks
Luca Boccassi [Mon, 12 Feb 2024 16:47:09 +0000 (16:47 +0000)] 
Merge pull request #31162 from poettering/tint-tweaks

ptyfwd: some tweaks to terminal handling

21 months agotest/test-shutdown.py: optionally display the test I/Os in a dedicated log file 31271/head
Franck Bui [Thu, 8 Feb 2024 15:12:41 +0000 (16:12 +0100)] 
test/test-shutdown.py: optionally display the test I/Os in a dedicated log file

Given that the test involves screen(1), sending various control sequences to
resize/clear the screen, most of the logs sent from the python script were
nearly impossible to read or mixed with other messages sent to the console
hence making the debug harder when the test is run manually.

This patch introduces an option to redirect the pexpect IOs into a file (to be
used in $STATEDIR/TEST-69-SHUTDOWN/run-nspawn).

The pexpect logs are also enabled later so the boot logs are skipped since
those are already included in the journal.

21 months agoMerge pull request #31233 from poettering/pcrlock-varlink
Lennart Poettering [Mon, 12 Feb 2024 14:48:03 +0000 (15:48 +0100)] 
Merge pull request #31233 from poettering/pcrlock-varlink

pcrlock: add simple Varlink API + some varlinkctl tweaks

21 months agobtrfs-util: apparently btrfs ioctls return unaligned data. deal with it. 31284/head
Lennart Poettering [Mon, 12 Feb 2024 11:50:36 +0000 (12:50 +0100)] 
btrfs-util: apparently btrfs ioctls return unaligned data. deal with it.

Kinda sad, that interfaces like this exist in 2024. But let's deal with
it: before we access "struct btrfs_ioctl_search_header" let's copy it
out, and access it only in the aligned copy.

Fixes: #31282
21 months agobtrfs-util: use memdup_suffix0() instead of strndup() at one more place
Lennart Poettering [Mon, 12 Feb 2024 14:32:25 +0000 (15:32 +0100)] 
btrfs-util: use memdup_suffix0() instead of strndup() at one more place

The structure we copy this out is a large (unaligned) binary blob, hence
let's better use the memdup_suffix0() so that gcc doesn't make
assumption about the source being a valid string.

21 months agobtrfs-util: rework btrfs_is_nocow_fd() around fd_is_fs_type() + read_attr_fd()
Lennart Poettering [Mon, 12 Feb 2024 11:55:47 +0000 (12:55 +0100)] 
btrfs-util: rework btrfs_is_nocow_fd() around fd_is_fs_type() + read_attr_fd()

Let's our safer helpers where appropriate.

21 months agocore/load-fragment: fix typo (sanety -> sanity)
Mike Yuan [Mon, 12 Feb 2024 13:44:23 +0000 (21:44 +0800)] 
core/load-fragment: fix typo (sanety -> sanity)

Follow-up for 435e1098ee9f1175bf60a181771a6e5983bef923

21 months agoMerge pull request #31242 from poettering/socket-uid-account
Lennart Poettering [Mon, 12 Feb 2024 13:07:51 +0000 (14:07 +0100)] 
Merge pull request #31242 from poettering/socket-uid-account

pid1: make MaxConnectionsPerSource= do something useful on AF_UNIX sockets

21 months agomissing: change our close_range() syscall wrapper to map glibc's
Lennart Poettering [Mon, 12 Feb 2024 10:23:54 +0000 (11:23 +0100)] 
missing: change our close_range() syscall wrapper to map glibc's

So glibc exposes a close_range() syscall wrapper now, but they decided
to use "unsigned" as type for the fds. Which is a bit weird, because fds
are universally understood to be "int". The kernel internally uses
"unsigned", both for close() and for close_range(), but weirdly,
userspace didn't fix that for close_range() unlike what they did for
close()... Weird.

But anyway, let's follow suit, and make our wrapper match glibc's.

Fixes #31270

21 months agoTODO: add --dry-run/-n 30380/head
Zbigniew Jędrzejewski-Szmek [Thu, 14 Dec 2023 14:32:45 +0000 (15:32 +0100)] 
TODO: add --dry-run/-n

21 months agoTEST-22: add --dry-run calls
Zbigniew Jędrzejewski-Szmek [Fri, 8 Dec 2023 09:17:04 +0000 (10:17 +0100)] 
TEST-22: add --dry-run calls

aCdDefLprRwxXz are tested with --dry-run.
I added a primitive test of bc.
There were no tests for AhHt, and I didn't add those either.

21 months agosystemd-tmpfiles: use statx_mount_same
Zbigniew Jędrzejewski-Szmek [Fri, 15 Dec 2023 12:27:44 +0000 (13:27 +0100)] 
systemd-tmpfiles: use statx_mount_same

It was pointed out in review that the preexisting code should be updated
(https://github.com/systemd/systemd/pull/30380#discussion_r1426899180).

21 months agotmpfiles: implement --dry-run
Zbigniew Jędrzejewski-Szmek [Fri, 8 Dec 2023 08:50:38 +0000 (09:50 +0100)] 
tmpfiles: implement --dry-run

The idea is simple: skip the final operation that creates or removes things
or changes the attributes, but otherwise go through the rest of the code.
This results in quite a lot of fairly repetitive conditions in the low-level
code. Another approach would be to print earlier, at a higher level, but then
we'd have less precise information about what is about to happen.

21 months agoservice: Demote log level of NotifyAccess= messages to debug
Michal Koutný [Fri, 9 Feb 2024 15:03:00 +0000 (16:03 +0100)] 
service: Demote log level of NotifyAccess= messages to debug

The situation is a service like

        Type=notify
        NotifyAccess=main

and the service uses some of the systemd helper utilities, e.g.
coredumpctl. The service process will pass NOTIFY_SOCKET to the helper
child (accidentally) and the result is a spurious notification and
the warning message:

> Jan 18 09:38:01 host systemd[1]: sdnotify.service: Got notification message from PID 13736, but reception only permitted for main PID 13549

Notification from helpers seem like an unintentional composition of the
commit c118b577fa ("coredumpctl: define main through macro") and commit
6b636c2d27 ("main-func: send main exit code to parent via sd_notify() on
exit"). The former used the handy macro for a main function, the latter
equipped any main function with the notification. (Further extended in
the commit 623a00020f ("notify: Add EXIT_STATUS field").)

Since notification from systemd utitilities are meant to extend
rudimentary exit()/wait() pair generally, they may happen to land into
service's NOTIFY_SOCKET. Tone down messages of notification that won't
match NotifyAccess=.

21 months agoMerge pull request #31076 from CodethinkLabs/vmspawn/directory_image_support
Lennart Poettering [Mon, 12 Feb 2024 11:20:16 +0000 (12:20 +0100)] 
Merge pull request #31076 from CodethinkLabs/vmspawn/directory_image_support

[vmspawn] directory type image support

21 months agoMerge pull request #31028 from yuwata/journalctl-raise
Mike Yuan [Mon, 12 Feb 2024 11:16:15 +0000 (19:16 +0800)] 
Merge pull request #31028 from yuwata/journalctl-raise

journalctl: call all cleanup functions before raise()

21 months agoMerge pull request #31181 from fbuihuu/gpt-auto-more-defensive
Mike Yuan [Mon, 12 Feb 2024 11:12:17 +0000 (19:12 +0800)] 
Merge pull request #31181 from fbuihuu/gpt-auto-more-defensive

gpt-auto-generator: be more defensive when checking the presence of E…

21 months agoupdate TODO 31233/head
Lennart Poettering [Wed, 7 Feb 2024 10:41:59 +0000 (11:41 +0100)] 
update TODO

21 months agotest: add brief test for prclock varlink interfaces and varlinkctl --collect
Lennart Poettering [Wed, 7 Feb 2024 10:51:11 +0000 (11:51 +0100)] 
test: add brief test for prclock varlink interfaces and varlinkctl --collect

21 months agovarlinkctl: if "call" verb is used, imply "-j"
Lennart Poettering [Wed, 7 Feb 2024 10:45:33 +0000 (11:45 +0100)] 
varlinkctl: if "call" verb is used, imply "-j"

For the other verbs turning off JSON mode makes sense, but for "call"
not so much, after all the contents of a method call reply is JSON we
couldn't really show any other way.

Hence, when JSON output was not configured otherwise in "call", default
to the same as -j.

21 months agovarlinkctl: add new --collect switch
Lennart Poettering [Wed, 7 Feb 2024 10:20:05 +0000 (11:20 +0100)] 
varlinkctl: add new --collect switch

It exposes the varlink_collect() call we internally provide: it collects
all responses of a method call that is issued with the "more" method
call flag. It then returns the result as a single JSON array.

21 months agovarlink: rework varlink_collect()
Lennart Poettering [Thu, 8 Feb 2024 10:34:49 +0000 (11:34 +0100)] 
varlink: rework varlink_collect()

This reworks varlink_collect() so that it is not just a wrapper around
varlink_observe(), varlink_bind_reply() and others. It becomes a first
class operation.

This has various benefits:

1. Memory management is normalized: the reply json variant is now
   tracked as part of the varlink object, and thus we do not pass
   ownership to the caller. This is just like we do it for simple method
   calls and removes a lot of confusion.
2. The bind reply/user data pointer can be used for user stuff, we'll
   not silently override this.
3. We enforce an overall time-out operation on the whole thing, so that
   this synchronous operation does no longer block forever.

21 months agovarlink: properly return reply flags to callers
Lennart Poettering [Thu, 8 Feb 2024 10:33:15 +0000 (11:33 +0100)] 
varlink: properly return reply flags to callers

We so far have a reply flags return parameter on varlink_call_full(),
but we return 0 always. Let's fix that, and return the actual flags we
see.

21 months agovarlink: enforce a maximum size limit on replies collected via varlink_collect()
Lennart Poettering [Wed, 7 Feb 2024 10:41:20 +0000 (11:41 +0100)] 
varlink: enforce a maximum size limit on replies collected via varlink_collect()

We should not allow servers to blow up client's memory without bounds,
hence set a (high) limit on replies we'll collect before failing.

21 months agopcrlock: add basic Varlink interface
Lennart Poettering [Fri, 2 Feb 2024 14:17:09 +0000 (15:17 +0100)] 
pcrlock: add basic Varlink interface

This can be used to make or delete a PCR policy via Varlink. It can also
be used to query the current event log in CEL format.

21 months agopcrlock: split out generation of CEL objects into helper func
Lennart Poettering [Fri, 2 Feb 2024 14:15:22 +0000 (15:15 +0100)] 
pcrlock: split out generation of CEL objects into helper func

This way, we can reuse it later to generate Varlink replies

No change in behaviour, just some trivial split out.

21 months agopcrlock: use log_setup()
Lennart Poettering [Fri, 2 Feb 2024 12:30:43 +0000 (13:30 +0100)] 
pcrlock: use log_setup()

21 months agotest: add a simple test for MaxConnectionsPerSocket= 31242/head
Lennart Poettering [Wed, 7 Feb 2024 14:08:22 +0000 (15:08 +0100)] 
test: add a simple test for MaxConnectionsPerSocket=

21 months agounits: enable MaxConnectionsPerSocket= for all our Accept=yes units
Lennart Poettering [Wed, 7 Feb 2024 12:19:54 +0000 (13:19 +0100)] 
units: enable MaxConnectionsPerSocket= for all our Accept=yes units

Let's make sure that user's cannot DoS services for other users so
easily, and enable MaxConnectionsPerSocket= by default for all of them.

Note that this is mostly paranoia for systemd-pcrextend.socket and
systemd-sysext.socket: the socket is only accessible to root anyway,
hence the accounting shouldn#t change anything. But this is just a
safety net, in preparation that we open up some functionality of these
services sooner or later.

21 months agopid1: make MaxConnectionsPerSource= also work for AF_UNIX sockets
Lennart Poettering [Wed, 7 Feb 2024 09:11:44 +0000 (10:11 +0100)] 
pid1: make MaxConnectionsPerSource= also work for AF_UNIX sockets

The setting currently puts limits on connections per IP address and
AF_UNIX CID. Let's extend it to cover AF_UNIX too, where it puts a limit
on connections per UID.

This is particularly useful for the various Accept=yes Varlink services
we now have, as it means, the number of per-user instance services
cannot grow without bounds.

21 months agoMerge pull request #30209 from yuwata/sd-journal-reduce-fstat
Yu Watanabe [Mon, 12 Feb 2024 10:38:24 +0000 (19:38 +0900)] 
Merge pull request #30209 from yuwata/sd-journal-reduce-fstat

sd-journal: potentially reduce number of fstat call

21 months agovmspawn: add support for --bind(-ro)= 31076/head
Sam Leonard [Wed, 13 Dec 2023 16:54:34 +0000 (16:54 +0000)] 
vmspawn: add support for --bind(-ro)=

21 months agovmspawn: document --directory and --private-users
Sam Leonard [Mon, 4 Dec 2023 17:33:12 +0000 (17:33 +0000)] 
vmspawn: document --directory and --private-users

21 months agovmspawn: add support for --private-users
Sam Leonard [Mon, 4 Dec 2023 18:54:40 +0000 (18:54 +0000)] 
vmspawn: add support for --private-users

21 months agonspawn: use parse_userns_uid_range
Sam Leonard [Tue, 30 Jan 2024 13:24:49 +0000 (13:24 +0000)] 
nspawn: use parse_userns_uid_range

21 months agobasic/namespace-util: add parse_userns_uid_range
Sam Leonard [Tue, 30 Jan 2024 13:24:22 +0000 (13:24 +0000)] 
basic/namespace-util: add parse_userns_uid_range

21 months agovmspawn: add support for -D/--directory
Sam Leonard [Wed, 24 Jan 2024 15:02:06 +0000 (15:02 +0000)] 
vmspawn: add support for -D/--directory

21 months agofirstboot: validate keymap entry
Eric Daigle [Fri, 9 Feb 2024 07:09:34 +0000 (23:09 -0800)] 
firstboot: validate keymap entry

As described in #30940, systemd-firstboot currently does not perform
any validation on keymap entry, allowing nonexistent keymaps to be
written to /etc/vconsole.conf. This commit adds validation checks
based on those already performed on locale entry, preventing invalid
keymaps from being set.

Closes #30940

m

21 months agoMerge pull request #31149 from YHNdnzj/restart-force-oneshot
Frantisek Sumsal [Mon, 12 Feb 2024 09:20:09 +0000 (10:20 +0100)] 
Merge pull request #31149 from YHNdnzj/restart-force-oneshot

core/service: allow RestartForceExitStatus= for oneshot service

21 months agoNEWS: gpt-auto-generator will become more defensive with ESP and XBOOTLDR 31181/head
Franck Bui [Mon, 12 Feb 2024 08:31:07 +0000 (09:31 +0100)] 
NEWS: gpt-auto-generator will become more defensive with ESP and XBOOTLDR

21 months agogpt-auto-generator: be more defensive when checking the presence of ESP in fstab
Franck Bui [Wed, 7 Feb 2024 12:41:48 +0000 (13:41 +0100)] 
gpt-auto-generator: be more defensive when checking the presence of ESP in fstab

Looking for the ESP node is useful to shortcut things but if we're told that
the node is not referenced in fstab that doesn't necessarily mean that ESP is
not mounted via fstab. Indeed the check is not reliable in all cases. Firstly
because it assumes that udev already set the symlinks up. This is not the case
for initrd-less boots. Secondly the devname of the ESP partition can be wrongly
constructed by the dissect code. For example, the approach which consists in
appending "p<partnum>" suffix to construct the partition devname from the disk
devname doesn't work for DM devices.

Hence this patch makes the logic more defensive and do not mount neither ESP
nor XBOOTLDR automatically if any path in paths that starts with /efi or /boot
exists.

21 months agoMerge pull request #30138 from yuwata/udev-processing-flag
Yu Watanabe [Mon, 12 Feb 2024 02:38:57 +0000 (11:38 +0900)] 
Merge pull request #30138 from yuwata/udev-processing-flag

udev: introduce ID_PROCESSING flag

21 months agotest: show error messages to stderr
Yu Watanabe [Sun, 21 Jan 2024 05:21:12 +0000 (14:21 +0900)] 
test: show error messages to stderr

Otherwise, 'meson test' hides the messages on failure.

21 months agorepart: fix typo
Yu Watanabe [Sun, 11 Feb 2024 17:52:34 +0000 (02:52 +0900)] 
repart: fix typo

Follow-up for 1a0541d44c78ced78a566051ec8f63417370aeaa.

21 months agologs-show: get timestamp and boot ID only when necessary 30209/head
Yu Watanabe [Tue, 2 Jan 2024 19:28:25 +0000 (04:28 +0900)] 
logs-show: get timestamp and boot ID only when necessary

Previously, get_display_timestamp() is unconditionally called even if we
will show logs in e.g. json format.
This drops unnecessary call of get_display_timestamp().

This also makes journal fields in each entry parsed only once in
output_short(). Still output_verbose() twice though.

This should improve performance of dumping journals.

Replaces #29365.

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
21 months agosd-journal: drop to use Hashmap to manage journal files per boot ID
Yu Watanabe [Tue, 2 Jan 2024 19:28:11 +0000 (04:28 +0900)] 
sd-journal: drop to use Hashmap to manage journal files per boot ID

As reported at https://github.com/systemd/systemd/pull/30209#issuecomment-1831344431,
using hashmap in frequently called function reduces performance.
Let's replace it with a single array and bsearch.

Replaces #29366.

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
21 months agotree-wide: set SD_JOURNAL_ASSUME_IMMUTABLE where appropriate
Yu Watanabe [Tue, 2 Jan 2024 19:28:08 +0000 (04:28 +0900)] 
tree-wide: set SD_JOURNAL_ASSUME_IMMUTABLE where appropriate

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
21 months agosd-journal: introduce SD_JOURNAL_ASSUME_IMMUTABLE flag
Yu Watanabe [Tue, 2 Jan 2024 19:28:06 +0000 (04:28 +0900)] 
sd-journal: introduce SD_JOURNAL_ASSUME_IMMUTABLE flag

The flag can be used when it is not necessary to follow journal file
update.

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
21 months agojournalctl: call all cleanup functions before raise() 31028/head
Yu Watanabe [Sat, 20 Jan 2024 13:14:14 +0000 (22:14 +0900)] 
journalctl: call all cleanup functions before raise()

Note, even with this, memory allocated internally by glibc is not freed.
But, at least, memory explicitly allocated by us is freed cleanly even
Ctrl-C is pressed during 'journalctl --follow'.

Closes #30995.

21 months agomain-func: make _DEFINE_MAIN_FUNC() take short function
Yu Watanabe [Sun, 21 Jan 2024 02:53:27 +0000 (11:53 +0900)] 
main-func: make _DEFINE_MAIN_FUNC() take short function

No functional change, just refactoring.

21 months agosd-journal: make journal_file_read_tail_timestamp() notify to the caller that some...
Yu Watanabe [Tue, 2 Jan 2024 19:28:03 +0000 (04:28 +0900)] 
sd-journal: make journal_file_read_tail_timestamp() notify to the caller that some new journal entries added

Tiny optimization for journal_file_find_newest_for_boot_id().

21 months agosd-journal: cache last entry offset and journal file state
Yu Watanabe [Tue, 2 Jan 2024 19:27:59 +0000 (04:27 +0900)] 
sd-journal: cache last entry offset and journal file state

When the offset of the last entry object (or last object for journal
files generated by an old journald) is not changed, the timestamps
should be updated by journal_file_read_tail_timestamp() are unchanged.
So, we can drop to call fstat() in the function.

As, the journal header is always mapped, so we can read the offset and
journal file state without calling fstat.
Still, when the last entry offset is changed, we may need to call fstat()
to read the entry object. But, hopefully the number of fstat() call
can be reduced.

21 months agoRevert "test: temporarily disable test_sysctl" 30138/head
Yu Watanabe [Tue, 2 Jan 2024 19:34:59 +0000 (04:34 +0900)] 
Revert "test: temporarily disable test_sysctl"

This reverts commit 8ed7800d7b0674c278513968e1bea1ebd4320c4f.

21 months agonetwork: do not enter initialized state when the interface is being processed by...
Yu Watanabe [Tue, 2 Jan 2024 19:34:56 +0000 (04:34 +0900)] 
network: do not enter initialized state when the interface is being processed by udevd

Fixes #30056.

21 months agoudev-util: introduce device_is_processing() helper function
Yu Watanabe [Tue, 2 Jan 2024 19:34:54 +0000 (04:34 +0900)] 
udev-util: introduce device_is_processing() helper function

21 months agoudev-util: use device_get_property_bool() at one more place
Yu Watanabe [Sun, 11 Feb 2024 16:13:50 +0000 (01:13 +0900)] 
udev-util: use device_get_property_bool() at one more place

21 months agoudev: introduce ID_PROCESSING=1 boolean property
Yu Watanabe [Tue, 2 Jan 2024 19:34:47 +0000 (04:34 +0900)] 
udev: introduce ID_PROCESSING=1 boolean property

This indicates that the device is being processed by udevd.

21 months agoMerge pull request #30260 from yuwata/sd-journal-cleanups
Yu Watanabe [Sun, 11 Feb 2024 16:07:11 +0000 (01:07 +0900)] 
Merge pull request #30260 from yuwata/sd-journal-cleanups

sd-journal: further cleanups

21 months agoRevert "packit: temporarily build systemd without BPF stuff"
Frantisek Sumsal [Sun, 11 Feb 2024 14:55:14 +0000 (15:55 +0100)] 
Revert "packit: temporarily build systemd without BPF stuff"

The latest Rawhide compose (20240210.n.1) finished successfully and made
it to the mirrors, so let's drop the bpftool workaround.

This reverts commit 8a0ec8852ccc5674420ae72483dc4f5b2a4fb752.

21 months agocore/service: allow RestartForceExitStatus= for oneshot services 31149/head
Mike Yuan [Wed, 31 Jan 2024 17:25:49 +0000 (01:25 +0800)] 
core/service: allow RestartForceExitStatus= for oneshot services

I think this was just overlooked in #13754, which removed
the restriction of Restart= on Type=oneshot services.
There's no reason to prevent RestartForceExitStatus=
now that Restart= has been allowed.

Closes #31148

21 months agoman/systemd.service: document that Restart=always/on-success are refused
Mike Yuan [Wed, 31 Jan 2024 19:37:52 +0000 (03:37 +0800)] 
man/systemd.service: document that Restart=always/on-success are refused
by oneshot services

21 months agocore/service: make error msg match with conditions
Mike Yuan [Wed, 31 Jan 2024 17:47:35 +0000 (01:47 +0800)] 
core/service: make error msg match with conditions

This was discussed in
https://github.com/systemd/systemd/pull/13754#discussion_r333395362.
I think we should actually list "success" Restart= settings instead.
There are more error statuses than success ones after all, and this
list hasn't really changed for quite some time.

21 months agorepart: Add --generate-fstab= and --generate-crypttab= options
Daan De Meyer [Mon, 25 Dec 2023 22:11:22 +0000 (23:11 +0100)] 
repart: Add --generate-fstab= and --generate-crypttab= options

These can be used along with two new settings MountPoint= and
EncryptedVolume= to write fstab and crypttab entries to the given
paths respectively in the root directory that repart is operating on.

This is useful to cover scenarios that aren't covered by the
Discoverable Partitions Spec. For example when one wants to mount
/home as a separate btrfs subvolume. Because multiple btrfs subvolumes
can be mounted from the same partition, we allow specifying MountPoint=
multiple times to add multiple entries for the same partition.

21 months agoMerge pull request #31273 from mrc0mmand/test-55-arch-gcc
Luca Boccassi [Sat, 10 Feb 2024 11:37:53 +0000 (11:37 +0000)] 
Merge pull request #31273 from mrc0mmand/test-55-arch-gcc

test: make the MemoryHigh= limit a bit more generous with sanitizers

21 months agoMerge pull request #31261 from bluca/repart_engine
Luca Boccassi [Fri, 9 Feb 2024 21:28:59 +0000 (21:28 +0000)] 
Merge pull request #31261 from bluca/repart_engine

repart: support engines and providers

21 months agotest: clean up the code a bit 31273/head
Frantisek Sumsal [Fri, 9 Feb 2024 17:53:19 +0000 (18:53 +0100)] 
test: clean up the code a bit

21 months agotest: make the MemoryHigh= limit a bit more generous with sanitizers
Frantisek Sumsal [Fri, 9 Feb 2024 17:44:58 +0000 (18:44 +0100)] 
test: make the MemoryHigh= limit a bit more generous with sanitizers

When we're running with sanitizers, sd-executor might pull in a
significant chunk of shared libraries on startup, that can cause a lot
of memory pressure and put us in the front when sd-oomd decides to go on
a killing spree. This is exacerbated further on Arch Linux when built
with gcc, as Arch ships unstripped gcc-libs so sd-executor pulls in over
30M of additional shared libs on startup:

~# lddtree build-san/systemd-executor
build-san/systemd-executor (interpreter => /lib64/ld-linux-x86-64.so.2)
    libasan.so.8 => /usr/lib/libasan.so.8
        libstdc++.so.6 => /usr/lib/libstdc++.so.6
        libm.so.6 => /usr/lib/libm.so.6
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1
    libsystemd-core-255.so => /root/systemd/build-san/src/core/libsystemd-core-255.so
        libaudit.so.1 => /usr/lib/libaudit.so.1
            libcap-ng.so.0 => /usr/lib/libcap-ng.so.0
...
    libseccomp.so.2 => /usr/lib/libseccomp.so.2
    libubsan.so.1 => /usr/lib/libubsan.so.1
    libc.so.6 => /usr/lib/libc.so.6

~# ls -Llh /usr/lib/libasan.so.8 /usr/lib/libstdc++.so.6 /usr/lib/libubsan.so.1
-rwxr-xr-x 1 root root 9.7M Feb  2 10:36 /usr/lib/libasan.so.8
-rwxr-xr-x 1 root root  21M Feb  2 10:36 /usr/lib/libstdc++.so.6
-rwxr-xr-x 1 root root 3.2M Feb  2 10:36 /usr/lib/libubsan.so.1

Sanitized libsystemd-core.so is also quite big:

~# ls -Llh /root/systemd/build-san/src/core/libsystemd-core-255.so /usr/lib/systemd/libsystemd-core-255.so
-rwxr-xr-x 1 root root  26M Feb  8 19:04 /root/systemd/build-san/src/core/libsystemd-core-255.so
-rwxr-xr-x 1 root root 5.9M Feb  7 12:03 /usr/lib/systemd/libsystemd-core-255.so

21 months agoMerge pull request #29960 from CodethinkLabs/vmspawn/mkosi-features
Daan De Meyer [Fri, 9 Feb 2024 17:39:54 +0000 (18:39 +0100)] 
Merge pull request #29960 from CodethinkLabs/vmspawn/mkosi-features

vmspawn: add features required by mkosi

21 months agoptyfwd: automatically turn off tinting/window title logic on dumb terminals 31162/head
Lennart Poettering [Wed, 7 Feb 2024 16:15:20 +0000 (17:15 +0100)] 
ptyfwd: automatically turn off tinting/window title logic on dumb terminals

If we are not talking to a reasonable terminal let's not try to set the
window title or tint the background.

21 months agoptyfwd: simplify error handling in shovel()
Lennart Poettering [Tue, 6 Feb 2024 10:30:02 +0000 (11:30 +0100)] 
ptyfwd: simplify error handling in shovel()

We treat all errors the same, hence let's just have a common handling
for that, and normalize how we propagate errors from shovel().

No change in behaviour, just some refactoring.

21 months agorun: set window title
Lennart Poettering [Thu, 1 Feb 2024 09:43:44 +0000 (10:43 +0100)] 
run: set window title

In interactive terminal mode, let's set a window title that reflects our
change of context to the target. Let's prefix it it with red/yellow
emoji dot in case we changed privileges.

21 months agonspawn: set window title from container name
Lennart Poettering [Thu, 1 Feb 2024 10:13:07 +0000 (11:13 +0100)] 
nspawn: set window title from container name

Let's update the window title with an ANSI sequence if we can. We'll
insert a blue dot, to match the blue tinting of the terminal screen,
indicating that we are in a container.

21 months agoglyph-util: add colored circle glyphs
Lennart Poettering [Thu, 1 Feb 2024 10:14:24 +0000 (11:14 +0100)] 
glyph-util: add colored circle glyphs

21 months agoptyfwd: optionally update window title if we are running a ptyfwd session
Lennart Poettering [Thu, 1 Feb 2024 09:07:30 +0000 (10:07 +0100)] 
ptyfwd: optionally update window title if we are running a ptyfwd session

21 months agoptyfwd: tweaks to background tinting logic
Lennart Poettering [Wed, 31 Jan 2024 17:48:53 +0000 (18:48 +0100)] 
ptyfwd: tweaks to background tinting logic

This makes two changes:

1. it resets the background color not only on NL (aka LF) but also on
   CR, but without erasing things to the end of the line. This increases
   compatbility with tools such as "less" which use CR to jump back to
   the beginning of the line.

2. previously we'd not process series of newlines or ansi sequences
   without intermediate other characters correctly, we'd always assume
   what follows is regular text. Fix that, and correctly determine the
   right state from the subsequent character.

21 months agotest-69: send SIGTERM to ask systemd-nspawn to properly stop the container
Franck Bui [Thu, 8 Feb 2024 15:11:21 +0000 (16:11 +0100)] 
test-69: send SIGTERM to ask systemd-nspawn to properly stop the container

The terminate() method sends SIGHUP but this signal is not handled by
systemd-nspawn hence the process just exits leaving the container scope around
breaking futher test executions.

This patch sends SIGTERM instead which is a defined API to request
sytemd-nspawn to stop and release the container's resources properly.

Follow-up for 8a7032cfb108c6daa395686320d9361c2195860a.

21 months agoMerge pull request #31269 from poettering/vconsole-enodev
Lennart Poettering [Fri, 9 Feb 2024 17:04:09 +0000 (18:04 +0100)] 
Merge pull request #31269 from poettering/vconsole-enodev

vconsole/pid1: handle ENODEV on /dev/console somewhat graceful

21 months agotmpfiles: simplify how a helper function is called
Zbigniew Jędrzejewski-Szmek [Wed, 24 Jan 2024 14:54:36 +0000 (15:54 +0100)] 
tmpfiles: simplify how a helper function is called

No functional change.

21 months agotmpfiles: use dir_cleanup() for R and D
Zbigniew Jędrzejewski-Szmek [Thu, 7 Dec 2023 12:01:27 +0000 (13:01 +0100)] 
tmpfiles: use dir_cleanup() for R and D

... i.e. apply nested config (exclusions and such) when executing R and D.

This fixes a long-standing RFE. The existing logic seems to have been an
accident of implementation. After all, if somebody specifies a config with
'R /foo; x /tmp/bar', then probably the goal is to remove stuff from under /foo,
but keep /tmp/bar. If they just wanted to nuke everything, then would not specify
the second item.

This also makes R and D use O_NOATIME, i.e. the access times of the directories
that are accessed will not be changed by the cleanup.

Obviously, we'll have to add this to NEWS and such.
Looking at the whole tmpfiles.d config in Fedora, this change has no effect.

The test cases are adjusted as appropriate. I also added another test case for
'R'/'D' with a file, just to test this code path more.

Replaces #20641.
Fixes #1633.

21 months agotmpfiles: split out helper to open a directory
Zbigniew Jędrzejewski-Szmek [Thu, 7 Dec 2023 11:56:44 +0000 (12:56 +0100)] 
tmpfiles: split out helper to open a directory

In preparation for future commits.

21 months agotmpfiles: drop unnecessary assignment
Zbigniew Jędrzejewski-Szmek [Thu, 7 Dec 2023 12:36:24 +0000 (13:36 +0100)] 
tmpfiles: drop unnecessary assignment

21 months agotmpfiles: split out verbs in help
Zbigniew Jędrzejewski-Szmek [Mon, 4 Dec 2023 11:15:27 +0000 (12:15 +0100)] 
tmpfiles: split out verbs in help

One of the three must always be specified, but they buried in a long list of
options in the output of --help. Make them more visible to draw the eye.

Also, drop "marked" from the description. It's supposed to mean "configured",
but it's a strange way to say that, and also it's generally obvious that the
program does what its configuration tells it to, and it's not going to remove
all files found on the system.

21 months agotree-wide: use normal spelling of "reopen"
Zbigniew Jędrzejewski-Szmek [Mon, 4 Dec 2023 10:57:55 +0000 (11:57 +0100)] 
tree-wide: use normal spelling of "reopen"

It's a commonly used verb meaning "to open again".

21 months agotmpfiles: break long log invocations and comments
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 19:01:27 +0000 (20:01 +0100)] 
tmpfiles: break long log invocations and comments

21 months agotmpfiles: inline variable declarations, use FOREACH_ARRAY and RET_GATHER
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 18:53:51 +0000 (19:53 +0100)] 
tmpfiles: inline variable declarations, use FOREACH_ARRAY and RET_GATHER

21 months agotmpfiles,sysusers: rework path argument handling
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 16:06:06 +0000 (17:06 +0100)] 
tmpfiles,sysusers: rework path argument handling

Previously, if given an absolute path, we would open the file, but when given a
relative path, we'd attempt to search the directories. If the user wants to open
a file from the search path, allowing paths is very confusing. E.g. with a path
like 'sysusers/foo.conf', we'd try to open '/etc/sysusers.d/sysusers/foo.conf',
'/run/sysusers.d/sysusers/foo.conf', …, and with '../foo.conf', we'd try to open
'/etc/sysusers.d/../foo.conf', '/run/sysusers.d/../foo.conf', …. This just isn't
useful, and in fact for a scheme like sysusers.d and tmpfiles.d where there we
have a flat directory with config files, only searching for plain names can
result in success. When a user specifies a relative path, it's more likely that
they wanted to open some local file. OTOH, to correctly open a local file, e.g.
one that they're just writing, this interface is also awkward, because something
like '$PWD/file.conf' has to be used to open a file with a relative path.

This patch changes the interface so that any path (i.e. an argument with "/") is
used to open a file directly, and only plain basenames are used for searching.

(Note that tpmfiles and sysusers are somewhat special here: their "config files"
make sense without the other config and users are likely to want to test them
without the other config. I was trying to do just that when writing a spec file
for a package and attempting to convert the existing scripts to sysusers and
tmpfiles. The same logic wouldn't apply for example to units or udev rules,
because they generally can only be interpreted with the whole rest of config
also available.)

21 months agosysusers: convert to conf_file_read()
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 15:34:15 +0000 (16:34 +0100)] 
sysusers: convert to conf_file_read()

I was annoyed that systemd-sysusers doesn't print any info when it opens a
config file. Its read_config_file() started out the same as the one in tmpfiles,
and then they diverged. The one in tmpfiles has that logging, hence the rework
to use it here too and get better logging. The two programs should provide
similar functionality, so using a common helper will make it easier to extend
them in tandem later.

No functional change apart from the log info.

The userdata argument (Context) is moved to the last position as requested in
the review.

21 months agotmpfiles: split out helper to open and read a "config file"
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 13:53:49 +0000 (14:53 +0100)] 
tmpfiles: split out helper to open and read a "config file"

No functional change.

Note that this function will be modified in subsequent commits, and the API
will change.

21 months agotmpfiles: only populate uid and gid caches once
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 14:28:52 +0000 (15:28 +0100)] 
tmpfiles: only populate uid and gid caches once

a3451c2c4ce7d3c02451f6ace4ee9f873880f78f added offline uid/gid support in a way
where the <root>/etc/passwd and <root>/etc/group would be read anew for each
configuration file that was parsed. The result would always be the same, so I
assume that this was an oversight. Let's use a global cache and and read the
file just once.

21 months agotmpfiles: adjust vertical whitespace
Zbigniew Jędrzejewski-Szmek [Sun, 3 Dec 2023 13:59:10 +0000 (14:59 +0100)] 
tmpfiles: adjust vertical whitespace