systemd/.git
17 months agologs-show: do not use _SOURCE_MONOTONIC_TIMESTAMP field
Yu Watanabe [Tue, 18 Jun 2024 08:55:31 +0000 (17:55 +0900)]
logs-show: do not use _SOURCE_MONOTONIC_TIMESTAMP field

The timestamp is not in CLOCK_MONOTONIC, but CLOCK_BOOTTIME,
while header monotonic timestamp is in CLOCK_MONOTONIC. Hence, we cannot
adjust timestamp by comparing with header monotonic timestamp and
_SOURCE_MONOTONIC_TIMESTAMP field.

Fixes a regression caused by affde1d7e79a634ee6053dbd4a57b3b51b74c170.
Fixes #33293.

17 months agovarlink-idl: fix typo
Yu Watanabe [Tue, 18 Jun 2024 00:11:48 +0000 (09:11 +0900)]
varlink-idl: fix typo

Follow-ups for fbb69c0306d434153ca85b227c7d42b9c92872e4.

17 months agocatalog: fix typo
Yu Watanabe [Tue, 18 Jun 2024 00:09:26 +0000 (09:09 +0900)]
catalog: fix typo

Follow-up for d6518003f8ebbfb6f85dbf227736ae05b0961199.

17 months agoMerge pull request #33376 from yuwata/strv_sort_uniq
Luca Boccassi [Mon, 17 Jun 2024 23:22:19 +0000 (00:22 +0100)]
Merge pull request #33376 from yuwata/strv_sort_uniq

strv: introduce strv_sort_uniq()

17 months agoMerge pull request #33359 from bluca/test_apparmor_unpriv
Luca Boccassi [Mon, 17 Jun 2024 23:13:15 +0000 (00:13 +0100)]
Merge pull request #33359 from bluca/test_apparmor_unpriv

mkosi: enable unprivileged user ns for integration tests

17 months agoMerge pull request #32724 from bluca/dynamic_user_no_private_tmp
Luca Boccassi [Mon, 17 Jun 2024 23:11:11 +0000 (00:11 +0100)]
Merge pull request #32724 from bluca/dynamic_user_no_private_tmp

core: do not imply PrivateTmp with DynamicUser, create a private tmpfs instead

17 months agoMerge pull request #33377 from yuwata/strbuf-cleanups
Luca Boccassi [Mon, 17 Jun 2024 19:08:22 +0000 (20:08 +0100)]
Merge pull request #33377 from yuwata/strbuf-cleanups

strbuf: several cleanups

17 months agoMerge pull request #33375 from yuwata/trivial-follow-ups
Luca Boccassi [Mon, 17 Jun 2024 19:06:46 +0000 (20:06 +0100)]
Merge pull request #33375 from yuwata/trivial-follow-ups

Trivial follow ups for recent PRs

17 months agoMerge pull request #33374 from YHNdnzj/coverity-fixes-1
Luca Boccassi [Mon, 17 Jun 2024 19:05:58 +0000 (20:05 +0100)]
Merge pull request #33374 from YHNdnzj/coverity-fixes-1

core: a few more fixes for serialization

17 months agoMerge pull request #32559 from poettering/varlink-comments
Luca Boccassi [Mon, 17 Jun 2024 17:53:11 +0000 (18:53 +0100)]
Merge pull request #32559 from poettering/varlink-comments

varlink: add nice commenting to our varlink IDL data

17 months agoMerge pull request #32872 from YHNdnzj/pidref-inode
Mike Yuan [Mon, 17 Jun 2024 16:47:44 +0000 (18:47 +0200)]
Merge pull request #32872 from YHNdnzj/pidref-inode

pidref: record pidfd inode number in PidRef struct

17 months agomkosi: bump to latest
Luca Boccassi [Mon, 17 Jun 2024 14:40:10 +0000 (15:40 +0100)]
mkosi: bump to latest

17 months agoCI: disable secure boot in mkosi GHA runs
Luca Boccassi [Mon, 17 Jun 2024 16:40:28 +0000 (17:40 +0100)]
CI: disable secure boot in mkosi GHA runs

Booting a guest with secure boot is broken in Azure due to a hypervisor
bug. Disable it for now. Given there's no option, need to edit
the configuration on the fly.

17 months agoportable: drop explicit PrivateTmp=yes from profiles
Luca Boccassi [Wed, 8 May 2024 19:16:05 +0000 (20:16 +0100)]
portable: drop explicit PrivateTmp=yes from profiles

It is already implied by DynamicUser=yes if not set, but dropping it
allows users to instead define TemporaryFileSystem=/tmp/ /var/tmp/
in their portable services, which has fewer side effects.

17 months agocore: do not imply PrivateTmp with DynamicUser, create a private tmpfs instead
Luca Boccassi [Wed, 8 May 2024 19:12:57 +0000 (20:12 +0100)]
core: do not imply PrivateTmp with DynamicUser, create a private tmpfs instead

DynamicUser= enables PrivateTmp= implicitly to avoid files owned by reusable uids
leaking into the host. Change it to instead create a fully private tmpfs instance
instead, which also ensures the same result, since it has less impactful semantics
with respect to PrivateTmp=yes, which links the mount namespace to the host's /tmp
instead. If a user specifies PrivateTmp manually, let the existing behaviour
unchanged to ensure backward compatibility is not broken.

17 months agotree-wide: replace strv_sort() + strv_uniq() -> strv_sort_uniq()
Yu Watanabe [Mon, 17 Jun 2024 15:06:59 +0000 (00:06 +0900)]
tree-wide: replace strv_sort() + strv_uniq() -> strv_sort_uniq()

17 months agostrbuf: use _cleanup_ attribute at one more place
Yu Watanabe [Wed, 12 Jun 2024 15:24:38 +0000 (00:24 +0900)]
strbuf: use _cleanup_ attribute at one more place

17 months agostrbuf: several cleanups
Yu Watanabe [Wed, 12 Jun 2024 15:20:26 +0000 (00:20 +0900)]
strbuf: several cleanups

- use FOREACH_ARRAY(),
- add one missing assertion,
- reduce indentation.

17 months agostrbuf: use CMP() macro
Yu Watanabe [Wed, 12 Jun 2024 15:17:20 +0000 (00:17 +0900)]
strbuf: use CMP() macro

strbuf_child_entry.c is uint8_t, so using CMP() is safer.

This also adds missing assertions.

17 months agostrv: introduce strv_sort_uniq()
Yu Watanabe [Mon, 17 Jun 2024 14:52:14 +0000 (23:52 +0900)]
strv: introduce strv_sort_uniq()

We often call strv_sort() and strv_uniq(). If a strv is already sorted.
uniquifying can be faster.

Prompted by https://github.com/systemd/systemd/pull/33012#discussion_r1636633627.

17 months agotest-network: mention that the captive portal option is supported since v2.20
Yu Watanabe [Mon, 17 Jun 2024 15:09:03 +0000 (00:09 +0900)]
test-network: mention that the captive portal option is supported since v2.20

The current latest release is v2.19, hence the test is typically skipped now.

17 months agojson: const char *func() -> const char* func()
Yu Watanabe [Mon, 17 Jun 2024 14:10:18 +0000 (23:10 +0900)]
json: const char *func() -> const char* func()

Follow-up for 309a747fa6cfeac0a0165543f23a924866727c9b.

17 months agocore/mount: suffix function name with paren
Yu Watanabe [Mon, 17 Jun 2024 14:08:36 +0000 (23:08 +0900)]
core/mount: suffix function name with paren

Follow-up for 88188e1ff1ffa2a4a41c9b8ee127f75cc03bc18d.

17 months agologind: tweaklets
Lennart Poettering [Mon, 27 May 2024 12:33:22 +0000 (14:33 +0200)]
logind: tweaklets

17 months agopretty-print: take console glyph width into account when drawing progress bar
Lennart Poettering [Fri, 24 May 2024 11:56:10 +0000 (13:56 +0200)]
pretty-print: take console glyph width into account when drawing progress bar

So far this used string length, not character width. Fix that.

17 months agocore/service: fix accept-socket deserialization
Mike Yuan [Mon, 17 Jun 2024 05:47:20 +0000 (07:47 +0200)]
core/service: fix accept-socket deserialization

Follow-up for 45b1017488cef2a5bacdf82028ce900a311c9a1c

17 months agocore: cast ignored retval of deserialize_* to void
Mike Yuan [Mon, 17 Jun 2024 05:21:43 +0000 (07:21 +0200)]
core: cast ignored retval of deserialize_* to void

Fixes CID#1547098

17 months agocore/socket: use FOREACH_ARRAY at one more place
Mike Yuan [Mon, 17 Jun 2024 14:39:59 +0000 (16:39 +0200)]
core/socket: use FOREACH_ARRAY at one more place

17 months agotest: use 'auto' instead of 'uefi' for automated fallback
Luca Boccassi [Mon, 17 Jun 2024 14:37:43 +0000 (15:37 +0100)]
test: use 'auto' instead of 'uefi' for automated fallback

mkosi will prefer UEFI if the architecture supports it, but fallback
to 'linux' if it doesn't.

17 months agotest: support TEST_NO_QEMU in mkosi integration wrapper
Luca Boccassi [Mon, 17 Jun 2024 13:09:40 +0000 (14:09 +0100)]
test: support TEST_NO_QEMU in mkosi integration wrapper

Same as the old integration test suite, allow skipping tests that
require qemu.
ppc64el's vsock support doesn't appear to work, so we'll skip it,
as it is already done in the legacy framework.

17 months agotest: support TEST_NO_KVM
Luca Boccassi [Sun, 16 Jun 2024 18:15:24 +0000 (19:15 +0100)]
test: support TEST_NO_KVM

The shell integration suite allows to manually deselect KVM, so
suppor the same env var for the same purpose in python.

17 months agotest: drop obsolete comment
Luca Boccassi [Sun, 16 Jun 2024 18:21:32 +0000 (19:21 +0100)]
test: drop obsolete comment

We want to keep various logic here instead of mkosi, so drop the
temporary comment

17 months agohwdb: add support for AIPTEK Media Tablet Ultimate (#33371)
reDBo0n [Mon, 17 Jun 2024 14:05:23 +0000 (16:05 +0200)]
hwdb: add support for AIPTEK Media Tablet Ultimate (#33371)

The "AIPTEK Media Tablet Ultimate", detected as "Waltop International Corp. Batteryless Tablet",
is missing the resolution of the x-/y-axes.

Adding a new rule to 60-evdev.hwdb with the same values as another entry
"WALTOP International Corp. Batteryless Tablet" just with another matching string makes the
device usable.

Fixes #33362.

17 months agotest: drop unneeded firmware: uefi setting
Luca Boccassi [Sun, 16 Jun 2024 15:08:57 +0000 (16:08 +0100)]
test: drop unneeded firmware: uefi setting

These tests no longer need this, as they are running in nspawn, drop it

17 months agotest: check the skip condition before installing additional files
Luca Boccassi [Sun, 16 Jun 2024 12:41:50 +0000 (13:41 +0100)]
test: check the skip condition before installing additional files

17 months agomkosi: install EFI packages only on EFI architectures
Luca Boccassi [Sun, 16 Jun 2024 19:42:12 +0000 (20:42 +0100)]
mkosi: install EFI packages only on EFI architectures

sbsigntool, systemd-boot and systemd-boot-efi do not  exist on other
architectures

17 months agomkosi: use ports.ubuntu.com for non-x86 backports
Luca Boccassi [Sun, 16 Jun 2024 14:28:56 +0000 (15:28 +0100)]
mkosi: use ports.ubuntu.com for non-x86 backports

Follow-up for 46368556afee7a1f3a1685609942438ef2d9d6c1

17 months agomkosi: enable unprivileged user ns for integration tests
Luca Boccassi [Sun, 16 Jun 2024 10:16:21 +0000 (11:16 +0100)]
mkosi: enable unprivileged user ns for integration tests

Ubuntu disables them by default in Noble, ship a sysctl to turn them back on
so that tests can use them

17 months agoMerge pull request #33355 from YHNdnzj/shutdown-cad
Luca Boccassi [Mon, 17 Jun 2024 08:19:08 +0000 (09:19 +0100)]
Merge pull request #33355 from YHNdnzj/shutdown-cad

shutdown: re-enable CAD handling in kernel at start, several other cleanups

17 months agoupdate TODO
Lennart Poettering [Mon, 29 Apr 2024 13:47:17 +0000 (15:47 +0200)]
update TODO

17 months agocreds: add comments to credential encryption/decryption method calls
Lennart Poettering [Fri, 26 Apr 2024 15:44:12 +0000 (17:44 +0200)]
creds: add comments to credential encryption/decryption method calls

17 months agovarlink: parse comments too
Lennart Poettering [Mon, 29 Apr 2024 13:33:02 +0000 (15:33 +0200)]
varlink: parse comments too

17 months agovarlink: add concept for embedding comments into IDL structures
Lennart Poettering [Fri, 26 Apr 2024 15:43:21 +0000 (17:43 +0200)]
varlink: add concept for embedding comments into IDL structures

17 months agostrv: add new helper strv_rebreak_lines() with a simple line breaking algorithm
Lennart Poettering [Fri, 26 Apr 2024 15:40:32 +0000 (17:40 +0200)]
strv: add new helper strv_rebreak_lines() with a simple line breaking algorithm

17 months agoutf8: export utf8_char_console_width()
Lennart Poettering [Fri, 26 Apr 2024 15:40:54 +0000 (17:40 +0200)]
utf8: export utf8_char_console_width()

17 months agoMerge pull request #33363 from YHNdnzj/service-serialization-cleanup
Luca Boccassi [Sun, 16 Jun 2024 22:01:35 +0000 (23:01 +0100)]
Merge pull request #33363 from YHNdnzj/service-serialization-cleanup

core/service: several cleanups for serialization logic

17 months agoMerge pull request #33364 from YHNdnzj/utf8-modernization
Luca Boccassi [Sun, 16 Jun 2024 21:33:08 +0000 (22:33 +0100)]
Merge pull request #33364 from YHNdnzj/utf8-modernization

basic/utf8: some modernizations

17 months agostring-util: introduce string_is_safe_ascii helper
Mike Yuan [Thu, 9 May 2024 14:01:07 +0000 (22:01 +0800)]
string-util: introduce string_is_safe_ascii helper

17 months agobasic/utf8: modernize ascii_is_valid_n, make ascii_is_valid static inline
Mike Yuan [Thu, 9 May 2024 13:58:36 +0000 (21:58 +0800)]
basic/utf8: modernize ascii_is_valid_n, make ascii_is_valid static inline

17 months agobasic/utf8: modernize utf8_is_valid_n a bit
Mike Yuan [Thu, 9 May 2024 13:55:09 +0000 (21:55 +0800)]
basic/utf8: modernize utf8_is_valid_n a bit

17 months agocore/service: use r to store parsed int values
Mike Yuan [Sun, 16 Jun 2024 16:58:42 +0000 (18:58 +0200)]
core/service: use r to store parsed int values

17 months agocore/service: drop unused bus_name_owner
Mike Yuan [Sun, 16 Jun 2024 16:40:39 +0000 (18:40 +0200)]
core/service: drop unused bus_name_owner

Follow-up for fc67a943d989d5e74577adea9676cdc7928b08fc

After the mentioned comment, we no longer need to record
the owner to restore the previous bus owner state.
Therefore, bus_name_owner is effectively unused. Kill it.

17 months agocore/service: also serialize/dump status_errno
Mike Yuan [Sun, 16 Jun 2024 16:34:27 +0000 (18:34 +0200)]
core/service: also serialize/dump status_errno

17 months agocore/service: use serialize_usec where appropriate, drop redundant debug log
Mike Yuan [Sun, 16 Jun 2024 16:16:23 +0000 (18:16 +0200)]
core/service: use serialize_usec where appropriate, drop redundant debug log

17 months agoMerge pull request #33214 from keszybz/system-clock-epoch
Mike Yuan [Sun, 16 Jun 2024 15:42:47 +0000 (17:42 +0200)]
Merge pull request #33214 from keszybz/system-clock-epoch

Rework the setting and description of system clock to the epoch

17 months agoMerge pull request #33352 from YHNdnzj/freeconp-void
Luca Boccassi [Sat, 15 Jun 2024 18:57:13 +0000 (19:57 +0100)]
Merge pull request #33352 from YHNdnzj/freeconp-void

Trivial follow-ups for recent PRs

17 months agoshutdown: re-enable CAD handling in kernel at start
Mike Yuan [Wed, 5 Jun 2024 15:57:07 +0000 (17:57 +0200)]
shutdown: re-enable CAD handling in kernel at start

17 months agoshutdown: clean up sync_with_progress a bit
Mike Yuan [Wed, 5 Jun 2024 15:53:27 +0000 (17:53 +0200)]
shutdown: clean up sync_with_progress a bit

Also, ignore the error on caller's side.

17 months agostring-util: modernize first_word a bit
Mike Yuan [Wed, 5 Jun 2024 14:54:29 +0000 (16:54 +0200)]
string-util: modernize first_word a bit

17 months agocore/manager: correct alignment in manager_handle_ctrl_alt_del
Mike Yuan [Wed, 12 Jun 2024 13:48:06 +0000 (15:48 +0200)]
core/manager: correct alignment in manager_handle_ctrl_alt_del

17 months agoman,units: drop "temporary" from description of systemd-tmpfiles
Mike Yuan [Sat, 15 Jun 2024 15:27:33 +0000 (17:27 +0200)]
man,units: drop "temporary" from description of systemd-tmpfiles

Historically, systemd-tmpfiles was designed to manager temporary
files, but nowadays it has become a generic tool for managing
all kinds of files. To avoid user confusion, let's remove "temporary"
from the tool's description.

As discussed in #33349

17 months agoman: describe setting of the clock by systemd and systemd-timesyncd
Zbigniew Jędrzejewski-Szmek [Wed, 5 Jun 2024 12:15:21 +0000 (14:15 +0200)]
man: describe setting of the clock by systemd and systemd-timesyncd

The setting of systemd clock is important and deserves an accurate description,
see for example:
https://discussion.fedoraproject.org/t/f38-to-f39-40-dnf-system-upgrade-can-fail-on-raspberry-pi/92403
https://bugzilla.redhat.com/show_bug.cgi?id=2242759

The meat of the description was in systemd-timesyncd.service(8), but
actually it's systemd that sets the clock. In particular, systemd-timesyncd
doesn't know anything about /usr/lib/clock-epoch, and since systemd sets
the clock to the epoch when initializing, systemd-timesyncd would only
get to advance the clock to the epoch under special circumstances.
Also, systemd-timesyncd is an optional component, so we can't even rely
on its man page being installed in all circumstances. The description needs
to be moved to systemd(1).

The description is updated to describe the changes that were made in
previous commits.

17 months agomanager: add structured log message about clock bump
Zbigniew Jędrzejewski-Szmek [Wed, 12 Jun 2024 09:55:14 +0000 (11:55 +0200)]
manager: add structured log message about clock bump

Requested in https://github.com/systemd/systemd/pull/33214#discussion_r1630251308.
Also, reword error messages a bit. When /usr/lib/clock-epoch was introduced,
"build time" stopped being acurate. Just say "epoch" instead.

The same message ID is used in the manager and timesyncd. The event is
essentially equivalent for the user, and it seems reasonable that to search for
both at the same time.

The catalog entry is dropped. It provided almost no additional information above
the message. When the same message ID is now applied to messages from PID1 and
timesyncd, and the clock can be both advanced and rewound, it becomes very hard
to make the catalog entry provide something useful, because catalog entries don't
allow conditionalization.

17 months agotimesyncd: simplify handling of timestamps
Zbigniew Jędrzejewski-Szmek [Wed, 5 Jun 2024 11:31:07 +0000 (13:31 +0200)]
timesyncd: simplify handling of timestamps

We would attempt to take the built-in epoch twice. Since
advance_tstamp() is only called from one place, we don't need to do that.
Also, just pass usec_t instead of a pointer to stat buf.

Don't say we set the clock to "recorded timestamp" if we just set it
to the built-in epoch. Also, consistently say "advance" to make it clear
that we'll not attempt to rewind the clock here.

17 months agomanager: apply clock epoch on updates too
Zbigniew Jędrzejewski-Szmek [Wed, 5 Jun 2024 11:21:45 +0000 (13:21 +0200)]
manager: apply clock epoch on updates too

If we're updating on a system with an invalid clock, and we're installing
a newer system version with a higher update, adjust the clock. This
way the invariant that the clock is always later than
max(compile time, timestamp file, other timestamp file) is maintained.

Also, adjust the wording of messages. When /usr/lib/clock-epoch was
introduced, "build time" stopped being acurate. Just say "epoch" instead.

17 months agomanager: use max of: compile epoch, epoch file, timesyncd file
Zbigniew Jędrzejewski-Szmek [Wed, 5 Jun 2024 10:50:52 +0000 (12:50 +0200)]
manager: use max of: compile epoch, epoch file, timesyncd file

Previously systemd would not use /var/lib/systemd/timesync/clock. This means
that even if /var/ is mounted when systemd is started and the file is
available, we would potentially make one time jump and than another time jump.
From a user's POV, this doesn't seem useful at all.

Also, we would always let /usr/lib/clock-epoch take priority over the built-in
epoch. But there is no guarantee that this file is actually fresh. In
particular, a user may touch /usr/lib/clock-epoch to work around a broken clock
during installation (as recommended in [1]), and then this file will grow stale
over time.

So just load the three timestamps and use the highest one as the epoch.

[1] https://discussion.fedoraproject.org/t/f38-to-f39-40-dnf-system-upgrade-can-fail-on-raspberry-pi/92403

17 months agoshared/clock-util: small modernization
Zbigniew Jędrzejewski-Szmek [Wed, 12 Jun 2024 08:24:52 +0000 (10:24 +0200)]
shared/clock-util: small modernization

17 months agorandom-util: add crypto_random_bytes_allocate_iovec()
Lennart Poettering [Thu, 6 Jun 2024 09:21:02 +0000 (11:21 +0200)]
random-util: add crypto_random_bytes_allocate_iovec()

Just a simple helper that allocates some memory, initializes it
randomly, and places this in a struct iovec.

17 months agoimportd: unify setup of bus connectivity in one place
Lennart Poettering [Tue, 7 May 2024 15:44:31 +0000 (17:44 +0200)]
importd: unify setup of bus connectivity in one place

17 months agoselinux-util: make type of cleanup func void
Mike Yuan [Sat, 15 Jun 2024 10:55:45 +0000 (12:55 +0200)]
selinux-util: make type of cleanup func void

Follow-up for 6623c64a02fae52103cdc9c80dfcabec9eeaf8ba

Return values are pointless for _cleanup_ functions, and
this matches what we do in DEFINE_TRIVIAL_CLEANUP_FUNC().

17 months agomissing_loop: add missing assertions for fallback values
Mike Yuan [Sat, 15 Jun 2024 10:55:21 +0000 (12:55 +0200)]
missing_loop: add missing assertions for fallback values

17 months agomacro-fundamental: correct comment and remove trailing ';' for macro
Mike Yuan [Sat, 15 Jun 2024 10:54:44 +0000 (12:54 +0200)]
macro-fundamental: correct comment and remove trailing ';' for macro

Follow-up for 3c2f2146f50c75662987541719bedc4aee9df939

17 months agoMerge pull request #33037 from keszybz/dlopen-open-code-definitions
Mike Yuan [Sat, 15 Jun 2024 10:49:59 +0000 (12:49 +0200)]
Merge pull request #33037 from keszybz/dlopen-open-code-definitions

Make dlopen macros more explicit and drop mac_selinux_free()

17 months agojson: extend JsonDispatch flags with nullable and refuse-null flags
Lennart Poettering [Wed, 8 May 2024 07:42:12 +0000 (09:42 +0200)]
json: extend JsonDispatch flags with nullable and refuse-null flags

currently when dispatching json objects into C structs we either insist
on the field type or we don't. Let's extend this model a bit: depending
on two new fields either allow or refuse null types in addition to the
specified type.

This is useful for example when dispatch enums as this allows us
explicitly refuse null in various scenarios where we allow multiple
types.

17 months agovarlink: handle NULL varlink server object gracefully in varlink_server_current_conne...
Lennart Poettering [Wed, 8 May 2024 08:40:48 +0000 (10:40 +0200)]
varlink: handle NULL varlink server object gracefully in varlink_server_current_connections()

let's treat a NULL server as a server with zero connections, to make
things more convenient to use.

17 months agomachined: use bus_message_read_id128() at one more place
Lennart Poettering [Mon, 13 May 2024 13:02:37 +0000 (07:02 -0600)]
machined: use bus_message_read_id128() at one more place

17 months agoMerge pull request #33329 from poettering/varlink-idl-tweaks
Luca Boccassi [Sat, 15 Jun 2024 00:18:37 +0000 (01:18 +0100)]
Merge pull request #33329 from poettering/varlink-idl-tweaks

varlink-idl: align continuation line character \

17 months agopretty-print: enable stdio buffering while outputting progress bar
Lennart Poettering [Fri, 24 May 2024 09:56:13 +0000 (11:56 +0200)]
pretty-print: enable stdio buffering while outputting progress bar

Writing the progress bar so far was irritatingly slow, which was caused
by the fact that the various things we output so far resulted in one
write() syscall each because STDERR is unbuffered by default.

Let's fix that, and temporarily turn on full buffering for stderr,
restoring the normal unbuffered output right after.

This makes progress bar print visibly more efficient (and flicker free
too, since terminals no longer will move the cursor around during
output).

17 months agoutf8: let utf8_console_width() handle NULL strings somewhat reasonably
Lennart Poettering [Fri, 26 Apr 2024 15:41:38 +0000 (17:41 +0200)]
utf8: let utf8_console_width() handle NULL strings somewhat reasonably

17 months agoMerge pull request #33325 from poettering/vsock-ret-optional
Luca Boccassi [Fri, 14 Jun 2024 23:45:28 +0000 (00:45 +0100)]
Merge pull request #33325 from poettering/vsock-ret-optional

socket-util: make return parameter for socket_address_parse_vsock() o…

17 months agojson: add sd_json_dispatch_double() helper
Lennart Poettering [Wed, 8 May 2024 07:11:13 +0000 (09:11 +0200)]
json: add sd_json_dispatch_double() helper

17 months agoMerge pull request #33334 from poettering/machined-more-pidfd
Luca Boccassi [Fri, 14 Jun 2024 23:13:50 +0000 (00:13 +0100)]
Merge pull request #33334 from poettering/machined-more-pidfd

machined: prefer pinning clients via pidfd when creating machine, rat…

17 months agoMerge pull request #33330 from poettering/copy-tweaks
Luca Boccassi [Fri, 14 Jun 2024 23:12:48 +0000 (00:12 +0100)]
Merge pull request #33330 from poettering/copy-tweaks

Minor tweaks to copy_bytes()

17 months agosrc/basic/missing_loop.h: fix missing LOOP_SET_BLOCK_SIZE
Raphaël Mélotte [Fri, 14 Jun 2024 12:37:29 +0000 (14:37 +0200)]
src/basic/missing_loop.h: fix missing LOOP_SET_BLOCK_SIZE

Builds with kernels headers < 4.14 fail with:

../src/shared/loop-util.c: In function ‘loop_configure_fallback’:
../src/shared/loop-util.c:237:31: error: ‘LOOP_SET_BLOCK_SIZE’ undeclared (first use in this function); did you mean ‘LOOP_SET_DIRECT_IO’?
                 if (ioctl(fd, LOOP_SET_BLOCK_SIZE, (unsigned long) c->block_size) < 0)
                               ^~~~~~~~~~~~~~~~~~~
                               LOOP_SET_DIRECT_IO

Fixes: https://github.com/systemd/systemd/issues/33341

Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
17 months agoman: add a bit of a warning to systemd-tmpfiles --purge
Nick Rosbrook [Fri, 14 Jun 2024 21:31:22 +0000 (17:31 -0400)]
man: add a bit of a warning to systemd-tmpfiles --purge

Mention that by default, /home is managed by tmpfiles.d/home.conf, and
recommend that users run systemd-tmpfiles --dry-run --purge first to
see exactly what will be removed.

17 months agocreds-util: add common helper for determinign global boot credentials path
Lennart Poettering [Thu, 6 Jun 2024 10:14:35 +0000 (12:14 +0200)]
creds-util: add common helper for determinign global boot credentials path

It's very useful being able to determine the directory where to write
global boot credentials to, that are picked up by all kernels.

17 months agofs-util: add simple open_mkdir() wrapper
Lennart Poettering [Thu, 6 Jun 2024 13:23:01 +0000 (15:23 +0200)]
fs-util: add simple open_mkdir() wrapper

17 months agostring-util: make sure strrepa() doesn't doubly evaluate expressions
Lennart Poettering [Wed, 22 May 2024 13:42:56 +0000 (15:42 +0200)]
string-util: make sure strrepa() doesn't doubly evaluate expressions

17 months agopcrlock: move event_log_reduce_to_safe_pcrs() down a bit
Lennart Poettering [Wed, 5 Jun 2024 19:47:43 +0000 (21:47 +0200)]
pcrlock: move event_log_reduce_to_safe_pcrs() down a bit

Let's keep the verb_lock_xyz() and verb_unlock_xyz() calls together, and
move event_log_reduce_to_safe_pcrs() which so far was in betwee them all
further down closer to where the function is actually used.

17 months agopcrlock: don't override conf_root parameter for boot_entry_token_ensure()
Lennart Poettering [Mon, 10 Jun 2024 12:57:18 +0000 (14:57 +0200)]
pcrlock: don't override conf_root parameter for boot_entry_token_ensure()

if we pass NULL boot_entry_token_ensure() will use its own default,
which is the same as what we passed so far explicitly, hence let's make
use of that.

17 months agofileio: add new helper write_base64_file_at() which encodes a binary object into...
Lennart Poettering [Mon, 10 Jun 2024 12:50:18 +0000 (14:50 +0200)]
fileio: add new helper write_base64_file_at() which encodes a binary object into base64 and writes it to a file

17 months agovmspawn: report "systemd-vmspawn" as "service" to machined
Lennart Poettering [Mon, 27 May 2024 12:34:10 +0000 (14:34 +0200)]
vmspawn: report "systemd-vmspawn" as "service" to machined

The "service" field that one is supposed to pass to machine is supposed
to indicate the implementation of the client, not the service unit the
client runs in (which is typically even a scope unit, not a system
unit). Hence fix that, and make it closely match what systemd-nspawn
does.

17 months agonspawn: use parse_boolean_argument() at two places
Lennart Poettering [Mon, 27 May 2024 11:29:45 +0000 (13:29 +0200)]
nspawn: use parse_boolean_argument() at two places

17 months agoutf8: assume tabs are 8 characters wide when written to console
Lennart Poettering [Fri, 26 Apr 2024 15:41:15 +0000 (17:41 +0200)]
utf8: assume tabs are 8 characters wide when written to console

17 months agofundamental: declare flex array updated for gcc15 and clang 19
Cristian Rodríguez [Thu, 13 Jun 2024 15:59:28 +0000 (11:59 -0400)]
fundamental: declare flex array updated for gcc15 and clang 19

Silly workaround that:
- allowed flexible arrays in unions
- allowed flexible arrays in otherwise empty structs

Is no longer needed since https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=adb1c8a0f167c3a1f7593d75f5a10eb07a5d741a
(GCC15) or clang 19 https://github.com/llvm/llvm-project/commit/14ba782a87e16e9e15460a51f50e67e2744c26d9

17 months agopidref: record pidfd inode number in PidRef struct
Mike Yuan [Thu, 23 May 2024 14:19:05 +0000 (22:19 +0800)]
pidref: record pidfd inode number in PidRef struct

Besides internal comparisons, the inode number of pidfds
might be interesting directly to users, too. In the future
this field should also be exposed, so that it can serve as
a unique identifier of a process (but only for display,
as there's no method to map this back to a pid or pidfd).

17 months agopidref: introduce pidfd_inode_ids_supported helper
Mike Yuan [Wed, 22 May 2024 11:27:36 +0000 (19:27 +0800)]
pidref: introduce pidfd_inode_ids_supported helper

Also, correct the comment about pidfs (added in kernel 6.9
rather than 6.8).

Co-authored-by: Lennart Poettering <lennart@poettering.net>
17 months agocopy: increase copy buffer from 16K to 64K
Lennart Poettering [Fri, 24 May 2024 10:18:23 +0000 (12:18 +0200)]
copy: increase copy buffer from 16K to 64K

In my tests here this tremendously speeds up things when initializing a
1G file from /dev/urandom

17 months agocopy: when a progress callback is provided, never copy more than 1M per iteration
Lennart Poettering [Fri, 24 May 2024 10:17:00 +0000 (12:17 +0200)]
copy: when a progress callback is provided, never copy more than 1M per iteration

Otherwise if we have to fill GB of data we might never call into the
callback, hence put some limit on how much to copy per iteration.

17 months agocopy: rework how we determine the number of bytes to copy in copy_bytes_full()
Lennart Poettering [Fri, 24 May 2024 10:02:42 +0000 (12:02 +0200)]
copy: rework how we determine the number of bytes to copy in copy_bytes_full()

Let's freshly calculate "m" on each iteration and always start with the maximum
size we can. If sendfile() is used we must adhere to its limit of
SSIZE_MAX minus the current offset. Otherwise we can copy more, i.e.
SSIZE_MAX without any restrictions.

Also, if we get too close to having copied SSIZE_MAX, let's turn off
sendfile() for the rest.