Lennart Poettering [Thu, 4 May 2023 10:06:10 +0000 (12:06 +0200)]
execute: remove credentials dir again when empty
This is closely related to the previous commit: if the credentials dir
is empty and nothing mounted on it, let's remove it again.
This will in particular happen if we decided to not actually install the
mount we prepared for the credentials because it is empty. In that case
the mount point inode is already there, and with this we'll remove it.
Primary effect, users will see ENOENT rather than EACCESS when trying to
access it, which should be preferable, given we already handle that
nicely in our credential consumption code.
This should also be useful on systems where we lack any privs to create
mounts, and thus operate on a regular dir anyway.
Lennart Poettering [Wed, 3 May 2023 20:45:05 +0000 (22:45 +0200)]
execute: suppress credentials mount if empty
Let's avoid creating another mount in the system if it's empty anyway.
This is mostl a cosmetic thing in one (pretty common) special case: if
creds settings are used in a unit but no creds actually available to be
passed.
(While we are at it this also does one more minor optimization: it
adjusts the MS_RDONLY/MS_NOSUID/… flags of the source mount we are about
to MS_MOVE into the right place only if we actually really move it, and
if we instead unmount it again we won't bother with the flags either)
Arthur Shau [Thu, 4 May 2023 01:41:10 +0000 (18:41 -0700)]
run: change sd_bus_call_method to bus_call_method (#27518)
Migrates the sd_bus_call_method code in run.c to use bus-locator.h api
Mike Yuan [Thu, 4 May 2023 01:19:48 +0000 (09:19 +0800)]
Merge pull request #27513 from mrc0mmand/journal-tests
test: a couple more TEST-04-JOURNAL follow-ups
Yu Watanabe [Wed, 3 May 2023 20:13:07 +0000 (05:13 +0900)]
core: fix use of uninitialized value
Fixes https://github.com/systemd/systemd/pull/27504#issuecomment-
1533354787.
Lennart Poettering [Tue, 2 May 2023 09:14:20 +0000 (11:14 +0200)]
cryptsetup: downgrade a bunch of log messages that to LOG_WARNING
In all these cases we ignore the failure, hence per our rule the log
level should be below LOG_ERR. Fix that.
Lennart Poettering [Wed, 3 May 2023 15:17:35 +0000 (17:17 +0200)]
mount-util: simplify mount_switch_root() a bit
There's no need to fchdir() out of the rootfs and back into it around
the umount2(), hence don't.
This brings the logic closer to what the pivot_root() man page suggests.
While we are at it, always operate based on fds, once we opened the
original dir, and pass the path string along only for generating
messages (i.e. as "decoration").
Add tests for both code paths: the pivot_root() one and the MS_MOUNT.
Daan De Meyer [Wed, 3 May 2023 13:27:10 +0000 (15:27 +0200)]
mkosi: Use kernel-kvmsmall package on opensuse
Let's save on image size by using the kernel build for KVM from
opensuse.
Lennart Poettering [Wed, 3 May 2023 18:12:20 +0000 (20:12 +0200)]
Merge pull request #27450 from poettering/switch-root-modernize
pid1: modernize switch root logic a bit
Frantisek Sumsal [Wed, 3 May 2023 16:24:17 +0000 (18:24 +0200)]
test: clean up the test script even further
Most notably:
- use `systemd-id128 new` instead of `journalctl --new-id128`
- move all temporary files to /tmp
- wrap repetitive checks in a function
Lennart Poettering [Thu, 23 Mar 2023 22:16:21 +0000 (23:16 +0100)]
core: minor coding style modernization in mount.c
Lennart Poettering [Wed, 3 May 2023 12:13:58 +0000 (14:13 +0200)]
sd-daemon: add sd_pid_notify_barrier() call and use it in systemd-notify
Previously we'd honour --pid= from the main notification we send, but
not from the barrier. This is confusing at best. Let's fix that.
Lennart Poettering [Wed, 3 May 2023 16:21:14 +0000 (18:21 +0200)]
Merge pull request #27510 from poettering/notify-barrier-pid-1-tweaks
pid 1 notify barrier handling tweaks
Lennart Poettering [Wed, 3 May 2023 12:14:06 +0000 (14:14 +0200)]
notify: don't send EXIT_STATUS= notify message from systemd-notify
In
623a00020f116d8e9c70608a9e4f7cc978342441 code was added that our
various programs send a notification message with their exit status on
exit. This is great, but it becomes utterly confusing in systemd-notify,
whose primary purpose is to send such messages after all, and sending an
implicit one in addition to the primary one is particularly confusing,
when debugging things.
Let's hence just drop the implicit message. systemd-notify's exit status
is after all indicative primarily because sd_notify() failed, and hence
it's pretty pointless to then send that fact as another sd_notify()
message.
(Primary reason for this patch is simply that it confused the hell out
of me, when debugging sd_notify() issues)
Follow-up for:
623a00020f116d8e9c70608a9e4f7cc978342441
Lennart Poettering [Fri, 28 Apr 2023 19:05:15 +0000 (21:05 +0200)]
update TODO
Lennart Poettering [Fri, 28 Apr 2023 18:47:10 +0000 (20:47 +0200)]
base-filesystem: unify common parts of base_filesystem_create_fd() branches
The error handling and fchmodat() invocation is pretty much the same in
the directory and symlink branches, hence make them the same.
No real change in behaviour. Just refactoring.
Lennart Poettering [Fri, 28 Apr 2023 16:33:17 +0000 (18:33 +0200)]
base-filesystem: add new helper base_filesystem_create_fd() that operates on an fd, instead of a path
This also changes the open flags from
O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW to
O_DIRECTORY|O_CLOEXEC. O_RDONLY is redundant, since O_RDONLY is zero
anyway, and O_DIRECTORY pins the acces mode enough: it doesn't allow
read()/write() anyway when specified. O_NONBLOCK is also pointless given
that O_DIRECTORY is specified, it has no meaning on directories. (It is
useful if we don't know much about the inode we are opening, and could
be a device node or fifo, but the O_DIRECTORY excludes that case.)
O_NOFOLLOW is dropped since there's really no point in blocking out the
initial entrypoint being a symlink. Once we pinned the the root of the
tree it might make sense to restrict symlink use below it, but for the
entrypoint itself it doesn't matter.
Lennart Poettering [Fri, 28 Apr 2023 16:35:31 +0000 (18:35 +0200)]
switch-root: don't require /mnt/ when switching root into host OS
So far, we invoked pivot_root() specifying /mnt/ as second argument,
which then unmounted right-after. We'd create /mnt/ if needed. This
sucks, because it means /mnt/ must strictly be pre-created on immutable
images.
Remove this limitation, by using pivot_root() with "." as source and
target, which will result in two stacked mounts afterwards: the new one
underneath, the old one ontop. We can then simply unmount the top one,
and have what we want without needing any extra /mnt/ dir.
Since we don't need /mnt/ anymore we can get rid of the extra
unmount_old_root parameter and simply specify it as NULL if we don't
want the old mount to stick around.
Frantisek Sumsal [Wed, 3 May 2023 15:37:09 +0000 (17:37 +0200)]
test: vacuum the journal after the "stress test"
To make the rest of the test significantly faster.
Frantisek Sumsal [Wed, 3 May 2023 15:32:36 +0000 (17:32 +0200)]
test: slightly extend checks on corrupted journals
Frantisek Sumsal [Wed, 3 May 2023 09:06:01 +0000 (11:06 +0200)]
test: further extend our collection of corrupted journals
And make adding them slightly easier.
Provides coverage for
b5335da7a5.
Lennart Poettering [Wed, 3 May 2023 12:12:43 +0000 (14:12 +0200)]
manager: add debug logging about BARRIER=1 messages
Lennart Poettering [Wed, 3 May 2023 12:12:26 +0000 (14:12 +0200)]
manager: simplify manager_process_barrier_fd() a bit
Yu Watanabe [Wed, 3 May 2023 12:45:26 +0000 (21:45 +0900)]
Merge pull request #27504 from mrc0mmand/fuzz-manager-serialize
test: add a simple fuzzer for manager serialization
Frantisek Sumsal [Tue, 2 May 2023 20:37:17 +0000 (22:37 +0200)]
shared: reject empty attachment path
Frantisek Sumsal [Tue, 2 May 2023 20:36:59 +0000 (22:36 +0200)]
shared: ignore invalid valink socket fd when deserializing
Frantisek Sumsal [Tue, 2 May 2023 20:36:36 +0000 (22:36 +0200)]
core: fix NULL pointer dereference during deserialization
Frantisek Sumsal [Mon, 1 May 2023 20:41:52 +0000 (22:41 +0200)]
test: add a simple fuzzer for manager serialization
Yu Watanabe [Wed, 3 May 2023 04:30:47 +0000 (13:30 +0900)]
Merge pull request #27499 from yuwata/sd-journal-fix-loop
sd-journal: check .next_entry_array_offset earlier
Yu Watanabe [Tue, 2 May 2023 16:30:23 +0000 (01:30 +0900)]
Revert "sd-journal: introduce simple loop detection for entry array objects"
This reverts commit
a8fbcc0e3c033a43e511550052cace6b0dcf3df7.
The commit is not necessary, as the invalid entry array object is
filtered earlier by the previous commit.
Yu Watanabe [Tue, 2 May 2023 16:29:08 +0000 (01:29 +0900)]
sd-journal: check .next_entry_array_offset earlier
Then, if it is invalid, refuse to use the entry array object.
Follow-up for
a8fbcc0e3c033a43e511550052cace6b0dcf3df7.
Fixes #27489.
Jan Janssen [Tue, 2 May 2023 17:41:58 +0000 (19:41 +0200)]
boot: Use correct memory type for allocations
We were using the wrong memory type when allocating pool memory. This
does not seem to cause a problem on x86, but the kernel will fail to
boot at least on ARM in QEMU.
This is caused by mixing different allocation types which ended up
breaking the kernel or EDK2 during boot services exit. Commit
2f3c3b0bee5534f2338439f04b0aa517479f8b76 appears to fix this boot
failure because it was replacing the gnu-efi xpool_print with xasprintf
thereby unifying the allocation type.
But this same issue can also happen without this fix somehow when the
random-seed logic is in use.
Fixes: #27371
msizanoen1 [Tue, 2 May 2023 09:59:07 +0000 (16:59 +0700)]
core: check for SERVICE_RELOAD_NOTIFY in manager_dbus_is_running
This ensures that systemd won't erronously disconnect from the system
bus in case a bus recheck is triggered immediately after the bus service
emits `RELOADING=1`.
This fixes an issue where systemd-logind sometimes randomly stops
receiving `UnitRemoved` after a system update.
This also handles SERVICE_RELOAD_SIGNAL just in case somebody ever
creates a D-Bus broker implementation that uses `Type=notify-reload`.
Lennart Poettering [Tue, 2 May 2023 10:23:07 +0000 (12:23 +0200)]
journal: handle EADDRNOTAVAIL in two more cases gracefully
Follow-up for #27488.
Yu Watanabe [Tue, 2 May 2023 15:12:48 +0000 (00:12 +0900)]
Merge pull request #27493 from poettering/generate-sym-test-tweaks
fixes/additions for generate-sym-test
Mike Yuan [Tue, 2 May 2023 12:53:35 +0000 (20:53 +0800)]
Merge pull request #27492 from poettering/base-filesystem-000
base-filesystem: create /proc, /sys, /dev mount points as 555
Luca Boccassi [Sun, 30 Apr 2023 18:21:23 +0000 (19:21 +0100)]
generators: skip private tmpfs if /tmp does not exist
When spawning generators within a sandbox we want a private /tmp, but it
might not exist, and on some systems we might be unable to create it
because users want a BTRFS subvolume instead.
Fixes https://github.com/systemd/systemd/issues/27436
Daan De Meyer [Tue, 2 May 2023 07:16:16 +0000 (09:16 +0200)]
tree-wide: Handle EADDRNOTAVAIL as journal corruption
Journal corruption is not only indicated by EBADMSG but also by
EADDRNOTAVAIL so treat that as corruption in a few more cases.
Lennart Poettering [Tue, 2 May 2023 10:03:32 +0000 (12:03 +0200)]
mount-setup: use size_t when iterating through array indexes
Lennart Poettering [Tue, 2 May 2023 08:44:14 +0000 (10:44 +0200)]
base-filesystem: create /proc, /sys, /dev mount points as 0555
These inodes are going to be overmounted anyway, hence let's create them
with access mode 555, so that they are as close to being immutable as
regular UNIX access modes allow them to be. In other words: this takes
the "w" mode away for root. This of course usually has little effect --
unless CAP_DAC_OVERRIDE is dropped. But at the very least it makes the
point clear that inodes should be considered immutable.
(I intended to make this 0000 originally, but that doesn't work, as many
tools – including our own – have fallback paths that when they see
ENOENT in /proc/ they can handle this gracefully. But changing the mode
to 000 would turn this to EACCES - something they usually have no
fallback path for)
Lennart Poettering [Tue, 2 May 2023 09:22:22 +0000 (11:22 +0200)]
generate-sym-test: only look in .c and .h files
Otherwise it might find backup files and such, which triggered all kinds
of false positives (at least on my devel machine).
Lennart Poettering [Tue, 2 May 2023 09:21:23 +0000 (11:21 +0200)]
generate-sym-test: search for missing symbols
This slightly extends the symbol file test and checks which symbols are
listed in one list but missing in the other. This is tremendously useful
to quickly determine which symbols wheren't exposed properly but should
have been.
(This is is implemented in pure C, no systemd helpers, to ensure we see
libsystemd.so API as any other tool would.)
Klaus [Tue, 2 May 2023 09:18:10 +0000 (11:18 +0200)]
docs: add correct `pacman` command (#27486)
The `pacman` command in order to install packages on Arch in the documentation is invalid.
This PR fixes the command.
Yu Watanabe [Tue, 2 May 2023 06:15:30 +0000 (15:15 +0900)]
test: replace sleep with timeout
If the test environment is too slow, then sleeping 2 seconds may not be
sufficient.
Yu Watanabe [Mon, 1 May 2023 19:45:30 +0000 (04:45 +0900)]
Merge pull request #27455 from yuwata/test-lib-sym
test: check all public functions are listed in .sym file
Luca Boccassi [Mon, 1 May 2023 19:10:58 +0000 (20:10 +0100)]
Merge pull request #27442 from DaanDeMeyer/presets
mkosi: Switch to use mkosi presets with prebuilt initrds
Yu Watanabe [Mon, 1 May 2023 15:11:49 +0000 (00:11 +0900)]
test-network: add workaround for bug in iproute2 v6.2.0
Closes #27473.
Jan Janssen [Mon, 1 May 2023 09:32:30 +0000 (11:32 +0200)]
stub: Relocate kernels below 4G for EFI handover
Old kernels can fail to boot when they are located above the 4G
boundary even if they claim to support it.
Fixes: #27472
Jan Janssen [Mon, 1 May 2023 09:31:52 +0000 (11:31 +0200)]
boot: Fix EFI_SIZE_TO_PAGES macro
Daan De Meyer [Tue, 25 Apr 2023 14:04:49 +0000 (16:04 +0200)]
mkosi: Switch to use mkosi presets with prebuilt initrds
Instead of building the initrds for the mkosi images with dracut,
let's switch to using mkosi presets to build the initrd with mkosi
as well.
This commit splits up our single image build into three separate
mkosi presets:
1. The "base" preset. This image contains systemd and all its runtime
dependencies. The sole purpose of this image is to serve as a base image
for the initrd and the final image. It's also responsible for building
systemd from source with the build script. The results are installed into
the base image. Note that we install the systemd and udev packages into this
image as well to prevent package managers from overriding the systemd we built
from source with the distro packaged systemd if it's pulled in as a dependency
by another package from the initrd or final profiles.
2. The "initrd" preset. This image provides the initrd. It's trivial and does
nothing more than packaging the base image up as a zstd compressed initramfs and
adds /init and /etc/initrd-release symlinks to the image.
3. The "final" preset. This image builds on top of the base image and adds
a kernel and extra packages that are useful for testing and debugging.
We also split out the optional kernel build into a separate set of config files
that are only included if a kernel to build is actually provided.
Note that this commit doesn't really change anything about how mkosi is used.
The commands remain the same, except that mkosi will now build all the presets
in order. "mkosi summary" will show the summary of all the presets. "mkosi qemu,
boot, shell" will always boot the final preset. With "-f", all presets will be
built and the final one is booted. "-i" makes a cache of each preset.
The only thing to keep in mind is that specifying config via the mkosi CLI will
apply to each of the presets. e.g. any extra packages added with "-p" will be
installed in both the initrd and the final image. To apply local configuration
to a single preset, create a file 00-local.conf in
mkosi.presets/<profile>/mkosi.conf.d and put all the preset specific configuration
in there.
Daan De Meyer [Mon, 1 May 2023 08:25:18 +0000 (10:25 +0200)]
meson: Search for find program
find is required by a few of the unit tests so let's make sure its
available when configuring the build.
Daan De Meyer [Thu, 27 Apr 2023 14:37:39 +0000 (16:37 +0200)]
meson: Search for diff program
diff is required by a few of the unit tests so let's make sure its
available when configuring the build.
Yu Watanabe [Mon, 1 May 2023 10:14:22 +0000 (19:14 +0900)]
Merge pull request #27458 from mrc0mmand/test-corrupted-journals
test: test journalctl with corrupted journals
Frantisek Sumsal [Sat, 29 Apr 2023 10:01:37 +0000 (12:01 +0200)]
test: test journalctl with corrupted journals
Last month I monkey-patched journald to produce a small (64K) but valid
journal and used that as an input to four AFL fuzzers. After a month it
generated quite a nice corpora (4738 test cases) and after filtering
and minimizing it I was left with 619 unique journals with various
levels of corruption that probe the journal code.
It seems to detect past issues like systemd#26567, etc.
Frantisek Sumsal [Wed, 26 Apr 2023 12:56:47 +0000 (14:56 +0200)]
test: clean up the test script a bit
Yu Watanabe [Mon, 1 May 2023 05:18:08 +0000 (14:18 +0900)]
sd-journal: introduce simple loop detection for entry array objects
If .next_entry_array_offset points to one of the previous entry or the
self entry, then the loop for entry array objects may run infinitely.
Let's assume that the offsets of each entry array object are in
increasing order, and check that in loop.
Fixes #27470.
Yu Watanabe [Sat, 29 Apr 2023 04:56:40 +0000 (13:56 +0900)]
test: also test all _public_ functions are listed in .sym files
Co-authored-by: Frantisek Sumsal <frantisek@sumsal.cz>
Yu Watanabe [Mon, 1 May 2023 05:16:43 +0000 (14:16 +0900)]
sd-journal: tighten variable scope
Yu Watanabe [Mon, 1 May 2023 05:12:38 +0000 (14:12 +0900)]
sd-journal: read entry array object again
Otherwise, the object may be invalidated by the previous call of
journal_file_move_to_object().
Yu Watanabe [Mon, 1 May 2023 03:54:15 +0000 (12:54 +0900)]
sd-journal: check validity of object type more strictly
Otherwise, the object with invalid type may pass check_object_header()
when the requested type is OBJECT_UNUSED.
Yu Watanabe [Mon, 1 May 2023 03:52:50 +0000 (12:52 +0900)]
sd-journal: add _OBJECT_TYPE_INVALID as usual
Yu Watanabe [Mon, 1 May 2023 03:50:30 +0000 (12:50 +0900)]
sd-journal: align table
Yu Watanabe [Sat, 29 Apr 2023 22:02:34 +0000 (07:02 +0900)]
sd-journal: check that the journal file is not stored in .newest_by_boot_id on free
Yu Watanabe [Sat, 29 Apr 2023 22:00:31 +0000 (07:00 +0900)]
sd-journal: unset prioq index on failure
Otherwise, potentially, the assertion in
journal_file_unlink_newest_by_bood_id() will be triggered.
Yu Watanabe [Sat, 29 Apr 2023 21:57:49 +0000 (06:57 +0900)]
sd-journal: fix use-after-free
As commented in the code, we need to replace the pointer to the key,
hence, hashmap_replace() must be used, instead of hashmap_update().
Fixes #27459.
Dan Streetman [Thu, 8 Dec 2022 21:57:47 +0000 (16:57 -0500)]
tpm2: move openssl-required ifdef code out of policy-building function
don bright [Sun, 30 Apr 2023 03:33:13 +0000 (22:33 -0500)]
hwdb: add hardware rfkill key for Dell Latitude E6* models (#27462)
Hello
This pull req is adapting pull req #5772 (which fixed issue #5047), for the very similar computer Dell Latitude E6420 which has the same problem with the hardware switch to toggle wifi (aka rfkill). The symptom is the following repeated msgs in dmesg
[ 309.010284] atkbd serio0: Use 'setkeycodes e008 <keycode>' to make it known.
[ 309.016020] atkbd serio0: Unknown key pressed (translated set 2, code 0x88 on isa0060/serio0).
Adding this line to include E6 models causes these messages to stop showing in dmesg
Thank you
Brad Fitzpatrick [Mon, 17 Apr 2023 21:36:33 +0000 (14:36 -0700)]
man: clarify RoutingPolicyRule.TypeOfService docs
Yu Watanabe [Sat, 29 Apr 2023 19:28:45 +0000 (04:28 +0900)]
Merge pull request #27461 from bluca/coredumpctl_completion
coredumpctl: fix bash completion
Luca Boccassi [Tue, 25 Apr 2023 14:30:34 +0000 (15:30 +0100)]
coredumpctl: add --file/--root/--image to bash completion
Luca Boccassi [Tue, 25 Apr 2023 14:30:00 +0000 (15:30 +0100)]
coredumpctl: fix bash completion matching
When multi-word matching string is quoted, __contains_word compares
it as a whole to the passed option, so it doesn't work.
Frantisek Sumsal [Sat, 29 Apr 2023 07:44:03 +0000 (09:44 +0200)]
test: make sure the test units have a `test-` prefix
So when collecting coverage the test-.service dropin works as
expected.
Follow-up to
969f5f3cea.
Frantisek Sumsal [Sat, 29 Apr 2023 07:33:18 +0000 (09:33 +0200)]
test: match all messages with the FILE field
As the systemd-pstore process is quite short lived, it might sometimes
lack the necessary metadata to make matching against a unit or a syslog
tag work. Since we already use a cursor file to make the matching window
small as possible, let's just drop the unit match completely and hope
for the best.
Resolves: #27453
Yu Watanabe [Sat, 29 Apr 2023 12:05:40 +0000 (21:05 +0900)]
libsystemd: add missing _public_ attributes
Yu Watanabe [Sat, 29 Apr 2023 04:55:55 +0000 (13:55 +0900)]
libsystemd: drop _public_ attribute for non-exported functions
Luca Boccassi [Sat, 29 Apr 2023 11:35:24 +0000 (12:35 +0100)]
Merge pull request #27451 from yuwata/core-path-trigger-notify
core/path: do not install new job in .trigger_notify()
Yu Watanabe [Sat, 29 Apr 2023 02:51:57 +0000 (11:51 +0900)]
missing_fs: also define struct file_clone_range
Follow-up for
b640e274a7c363a2b6394c9dce5671d9404d2e2a.
Addresses https://github.com/systemd/systemd/commit/
b640e274a7c363a2b6394c9dce5671d9404d2e2a#r110996661.
Yu Watanabe [Fri, 28 Apr 2023 19:39:46 +0000 (04:39 +0900)]
test: add tests for "systemctl stop" vs triggering by path unit
Yu Watanabe [Sat, 29 Apr 2023 00:10:11 +0000 (09:10 +0900)]
test: create temporary units under /run
Yu Watanabe [Fri, 28 Apr 2023 19:31:53 +0000 (04:31 +0900)]
core/path: do not enqueue new job in .trigger_notify callback
Otherwise,
1. X.path triggered X.service, and the service has waiting start job,
2. systemctl stop X.service
3. the waiting start job is cancelled to install new stop job,
4. path_trigger_notify() is called, and may reinstall new start job,
5. the stop job cannot be installed, and triggeres assertion.
So, instead, let's add a defer event source, then enqueue the new start
job after the stop (or any other type) job finished.
Fixes https://github.com/systemd/systemd/issues/24577#issuecomment-
1522628906.
Yu Watanabe [Fri, 28 Apr 2023 19:30:32 +0000 (04:30 +0900)]
core/path: align table
Lennart Poettering [Fri, 28 Apr 2023 14:14:32 +0000 (16:14 +0200)]
pid1: unify implemenation of /run/ disk space safety check a bit
reload/reexec currently used a separate implementation of the /run/ disk
space check, different from the one used for switch-root, even though
the code is mostly the same. The one difference is that the former
checks are authoritative, the latter are just informational (that's
because refusing a reload/reexec is relatively benign, but refusing a
switch-root quite troublesome, since this code is entered when it's
already "too late" to turn turn back, i.e. when the preparatory
transaction to initiate the switch root are already fully executed.
Let's share some code, and unify codepaths.
(This is preparation for later addition of a "userspace reboot" concept)
No change in behaviour, just refactoring.
Lennart Poettering [Fri, 28 Apr 2023 14:56:39 +0000 (16:56 +0200)]
core/systemctl: when switching root default to /sysroot/
We hardcode the path the initrd uses to prepare the final mount point at
so many places, let's also imply it in "systemctl switch-root" if not
specified.
This adds the fallback both to systemctl and to PID 1 (this is because
both to — different – checks on the path).
Daan De Meyer [Fri, 28 Apr 2023 14:54:57 +0000 (16:54 +0200)]
libsystemd: Add missing memory pressure functions to public symbols
Mike Yuan [Fri, 28 Apr 2023 17:33:21 +0000 (01:33 +0800)]
Merge pull request #27445 from poettering/reflink-fix
remove duplication reflink ioctl invocation
Lennart Poettering [Fri, 28 Apr 2023 14:30:32 +0000 (16:30 +0200)]
systemctl: rework 'if' to 'switch' statement
Luca Boccassi [Fri, 28 Apr 2023 15:14:09 +0000 (16:14 +0100)]
Merge pull request #27437 from mrc0mmand/pstore
test: add a couple of tests for systemd-pstore
Lennart Poettering [Fri, 28 Apr 2023 13:16:00 +0000 (15:16 +0200)]
copy: shortcut reflink_range() to reflink() in some cases
Lennart Poettering [Fri, 28 Apr 2023 13:10:24 +0000 (15:10 +0200)]
copy: don't call clone ioctls twice
The btrfs name and the generic name have the same values, hence there's
no point in bothering with the former.
Frantisek Sumsal [Thu, 27 Apr 2023 21:17:52 +0000 (23:17 +0200)]
test: add a couple of tests for systemd-pstore
Luca Boccassi [Fri, 28 Apr 2023 10:34:41 +0000 (11:34 +0100)]
Merge pull request #27440 from yuwata/reflink-follow-ups
copy: follow ups for reflink()
Frantisek Sumsal [Fri, 28 Apr 2023 09:50:33 +0000 (11:50 +0200)]
pstore: avoid opening the dmesg.txt file if not requested
Even with Storage=journal we would still attempt to open the final
dmesg.txt file which causes a lot of noise in the journal:
```
[ 5.764111] H testsuite-82.sh[658]: + systemctl start systemd-pstore
[ 5.806385] H systemd[1]: Starting modprobe@efi_pstore.service...
[ 5.808656] H systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[ 5.808971] H systemd[1]: Finished modprobe@efi_pstore.service.
[ 5.818845] H kernel: audit: type=1130 audit(
1682630623.637:114): pid=1 uid=0 auid=
4294967295 ses=
4294967295 subj=kernel msg='unit=modprobe@efi_pstore comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? termin>
[ 5.818865] H kernel: audit: type=1131 audit(
1682630623.637:115): pid=1 uid=0 auid=
4294967295 ses=
4294967295 subj=kernel msg='unit=modprobe@efi_pstore comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? termin>
[ 5.816052] H systemd[1]: Starting systemd-pstore.service...
[ 5.840703] H systemd-pstore[806]: PStore dmesg-efi-
168263062313014.
[ 5.841239] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.841428] H systemd-pstore[806]: PStore dmesg-efi-
168263062312014.
[ 5.841575] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.841712] H systemd-pstore[806]: PStore dmesg-efi-
168263062311014.
[ 5.841839] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.841989] H systemd-pstore[806]: PStore dmesg-efi-
168263062310014.
[ 5.842141] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.842274] H systemd-pstore[806]: PStore dmesg-efi-
168263062309014.
[ 5.842423] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.842589] H systemd-pstore[806]: PStore dmesg-efi-
168263062308014.
[ 5.842722] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.842865] H systemd-pstore[806]: PStore dmesg-efi-
168263062307014.
[ 5.843003] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.843153] H systemd-pstore[806]: PStore dmesg-efi-
168263062306014.
[ 5.843280] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.843434] H systemd-pstore[806]: PStore dmesg-efi-
168263062305014.
[ 5.843570] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.843702] H systemd-pstore[806]: PStore dmesg-efi-
168263062304014.
[ 5.843831] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.843958] H systemd-pstore[806]: PStore dmesg-efi-
168263062303014.
[ 5.844093] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.844250] H systemd-pstore[806]: PStore dmesg-efi-
168263062302014.
[ 5.844412] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.844619] H systemd-pstore[806]: PStore dmesg-efi-
168263062301014.
[ 5.844781] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.844956] H systemd-pstore[806]: PStore dmesg-efi-
168263062300014.
[ 5.845168] H systemd-pstore[806]: Failed to open file /var/lib/systemd/pstore/
1682630623/014/dmesg.txt: Operation not permitted
[ 5.851101] H systemd[1]: Finished systemd-pstore.service.
```
Yu Watanabe [Fri, 28 Apr 2023 05:02:42 +0000 (14:02 +0900)]
network-generator: shorten code a bit
Yu Watanabe [Fri, 28 Apr 2023 09:46:36 +0000 (18:46 +0900)]
Merge pull request #27424 from dtardon/auto-cleanup
More automatic cleanup
Frantisek Sumsal [Fri, 28 Apr 2023 09:09:22 +0000 (11:09 +0200)]
pstore: explicitly set the base when converting record ID
David Tardon [Fri, 21 Apr 2023 13:53:02 +0000 (15:53 +0200)]
logind-session-dbus: use _cleanup_
David Tardon [Fri, 21 Apr 2023 13:50:21 +0000 (15:50 +0200)]
logind-session-device: modernize session_device_free()
David Tardon [Fri, 21 Apr 2023 13:30:45 +0000 (15:30 +0200)]
homed-manager-bus: use _cleanup_
David Tardon [Fri, 28 Apr 2023 07:28:25 +0000 (09:28 +0200)]
transaction: make transaction_free() static
... as it's not needed outside transaction.c anymore.
David Tardon [Fri, 21 Apr 2023 13:15:38 +0000 (15:15 +0200)]
manager: use _cleanup_ in manager_propagate_reload()