Commit Graph
57095 Commits
Author SHA1 Message Date
Luca Boccassi 3a5cd7dd8d Merge pull request #22251 from medhefgo/boot-cleanup
boot: Small improvements
2022-01-26 22:34:32 +00:00
Daan De Meyer 8bad545354 journal: Stop comparing hash values from entry items against data objects
These checks don't achieve anything of value. Assuming they were added to
check for corruption, they don't actually achieve this goal since other parts
of the data object can still get corrupted and we wouldn't notice unless we'd
recalculate the hash every time.

In theory, we could use the entry item hash to avoid a random access lookup
for the data object hash in the journal file in the future to speed up searching,
but for finding all entry objects containing a specific data objects, we already
have entry arrays per data object to get fast access to this information.

This means that duplicating the hashes in the entry item doesn't result in any
added value. In this commit, we remove the checks so that in future commits we
can remove the hashes from the journal file format in the new compact mode.
2022-01-26 20:16:00 +00:00
Daan De Meyer c710944c83 journal: Inline loop variable 2022-01-26 20:16:00 +00:00
Daan De Meyer 578cd1855b journal: Invert verify entry <=> data consistency checks
Previously, for each entry in a data object's entry array, we'd check
if one of that entry's entry items referred to the data object.

Instead, when verifying the main entry array, let's check if for each
entry item found by iterating the main entry array, the corresponding
data object's entry array refers to that entry.

This enables us to re-use more code from journal-file and turns out to
be roughly 10s faster when verifying my 4G laptop journal.

When verifying data objects, we still check if every entry in the data
object's entry array also exists in the main entry array so that we ensure
we're not missing any entries when iterating the main entry array.
2022-01-26 20:16:00 +00:00
Daan De Meyer df53536435 journal: Fail gracefully when linking a new entry
Let's always try to link all entry items even if linking one fails
due to not being able to allocate a new entry array. Other entry
items might still be successfully linked if the entry array of the
corresponding data object isn't full yet.
2022-01-26 20:16:00 +00:00
Daan De Meyer 910eb3c063 journal: Use ret_offset everywhere in journal-file.h 2022-01-26 20:16:00 +00:00
Daan De Meyer ded10e3a5f journal: Only move to objects when necessary
Let's make sure we only move to objects when it's required. If "ret"
is NULL, the caller isn't interested in the actual object and the
function being called shouldn't move to it unless it has to
inspect/modify the object itself.
2022-01-26 20:16:00 +00:00
Daan De Meyer ec50313d4e journal: Pass data objects to journal_file_move_to_entry_..._for_data() functions
This reduces the number of calls to journal_file_move_to_object() which are heavy.
All call sites have easy access to the data object so this change doesn't end up
complicating things.
2022-01-26 20:16:00 +00:00
Daan De Meyer 57e97246cd journal: Log error when keyed hash env variable cannot be parsed 2022-01-26 20:16:00 +00:00
Daan De Meyer 3a8099a871 journal: Use offsetof(Object, ...) to retrieve object field offsets
We currently use both offsetof(Object, ...) and offsetof(DataObject, ...).
This makes it harder to grep for usages as we have to make sure we grep for
both usages. Let's unify these all to use offsetof(Object, ...) to make it
easier to grep for usages.
2022-01-26 20:16:00 +00:00
Luca Boccassi 429cddbaf1 NEWS: note breaking change w.r.t. Restart=always and ExecCondition= 2022-01-26 19:03:34 +00:00
Luca Boccassi abb99360d3 core: do not restart a service with Restart=always when ExecCondition fails
When a Condition*= fails, and a service has Restart=always,
the service is not restarted.
Follow the same behaviour for ExecCondition= to avoid inconsistencies.

Fixes #22257
2022-01-26 19:02:11 +00:00
Jan Janssen 1926a11439 boot: Add screen resolution to print status 2022-01-26 18:07:00 +01:00
Jan Janssen c323c2f63c boot: Also NUL-terminate for CHAR16 in file_reaad 2022-01-26 18:07:00 +01:00
Jan Janssen 20a734726e boot: Use ASSERT_PTR 2022-01-26 18:07:00 +01:00
Jan Janssen 83d905b7b4 boot: Optimize unique title generation 2022-01-26 18:06:52 +01:00
Yu Watanabe 9d3bb25b2d Merge pull request #22252 from medhefgo/boot-build
meson: Boot build/test changes
2022-01-27 01:32:04 +09:00
Yu Watanabe 58ceeb844d Merge pull request #22249 from yuwata/wait-online-fix-unmanaged-state
wait-online: fix handling of unmanaged state
2022-01-27 01:17:12 +09:00
Daan De Meyer f82f0b9937 shared: Ensure COPY_HOLES copies trailing holes
Previously, files with a hole at the end would get silently truncated
which breaks reading journal files. This commit makes sure that holes
are punched in existing space and if no more space is available, that
we grow the file and the hole by using ftruncate().

The corresponding test is extended to put a hole at the end of the file
and we make sure that hole is copied correctly.
2022-01-27 01:15:22 +09:00
Yu Watanabe cd7fcda543 wait-online: make manager_link_is_online() return 0 when in unmanaged state
Previously, even if a link is in unmanaged state, the function may
returns positive value. So, even if all managed links are in the configured
sate but do not satisfy the online criteria, e.g., IPv4 address state,
then wait-online finishes with positive value.

This makes the function always return 0 for unmanaged state. So, at
least one managed link must satisfies the online criteria.

This also adds more comments and debugging logs.

Fixes #22246.
2022-01-26 22:41:47 +09:00
Yu Watanabe 5f200833ed wait-online: rename Manager elements 2022-01-26 22:41:47 +09:00
Jan Janssen 7afd0196b6 meson: Use --no-wchar-size-warning
This only disables the one warning that we care to ignore, making
sure that any future issues do not get masked.
2022-01-26 14:40:55 +01:00
Jan Janssen b6167d9611 meson: Use same name format for efi binary intermediates 2022-01-26 14:40:55 +01:00
Jan Janssen b2ba8511e6 meson: Remove test-efi-create-disk.sh
The script was probably not used for a very long time. It is currently
passed systemd_boot.so as boot loader, which cannot work. The test
entries it creates are all pointing at non-existant efi/linux binaries,
which means they would not even show up in the menu if the created image
were actually booted. There is also nothing that actually tries to run
the image in the first place.

If we end up creating a proper systemd-boot test suite, it would be
better to start from scratch. In the meantime, mkosi already covers
the bare minimum with a simple bootup test.
2022-01-26 14:40:51 +01:00
Luca Boccassi e3f7ed944a portable: add flag to return extension-releases in GetImageMetadataWithExtensions
Return the name of each extension and the associated extension-release
file, and pretty-print them in 'portablectl inspect', if a new flag
is passed.

$ portablectl inspect --extension app2 --extension app0  minimal app0 app1
(Matching unit files with prefixes 'app0', 'app1'.)
Image:
        /run/portables/minimal.raw
Portable Service:
        n/a
Operating System:
        Debian GNU/Linux 10 (buster)
Extension:
        /run/portables/app2.raw
        Extension Scope:
                n/a
        Extension Compatibility Level:
                n/a
        Portable Service:
                n/a
        Portable Prefixes:
                n/a
        Operating System:
                n/a (debian 10)
Extension:
        /run/portables/app0.raw
        Extension Scope:
                n/a
        Extension Compatibility Level:
                n/a
        Portable Service:
                n/a
        Portable Prefixes:
                n/a
        Operating System:
                n/a (debian 10)
Unit files:
        app0.service
2022-01-25 22:22:47 +00:00
Ludwig Nussel 48f3bc5cc4 test: add shutdown test
Wraps nspawn to be able to use pexpect. The test logs in on the console
and runs screen. In one screen window it types in shutdown commands and
checks whether a wall message was sent to the other.
2022-01-25 17:43:13 +01:00
Ludwig Nussel 38d55bf264 systemctl: shutdown don't fallback on auth fail
For shutdowns don't fall back to starting the target directly if talking
to logind failed with auth failure. That would just lead to another
polkit auth attempt.
2022-01-25 17:43:13 +01:00
Ludwig Nussel 5ed73478e1 logind: refactor
Avoid hardcoded strings and string compares related to shutdown actions.
Instead put everything into a common structure. Reuse existing
HandleAction as index since it's already exposed as property for the
button handlers.
2022-01-25 17:43:10 +01:00
Ludwig Nussel ec14fba91c logind: require polkit auth for cancelling shutdowns 2022-01-25 14:56:55 +01:00
Ludwig Nussel 030f37c408 logind: fix wall messages for direct shutdown calls
The wall mechanism uses the scheduled_shutdown_type to determine what
message to send so it needs to be filled in also for the cases that call
for shutdown without schedule.

It's really a hackish way. The overall code needs refacturing.
2022-01-25 14:56:52 +01:00
Ludwig Nussel cdf370626f logind: enable wall messages by default
Something calling directly into the dbus interface to request a
shutdown may not bother turning wall messages on explicitly.

This has the convenient side effect that no separate polkit auth is
required to turn on wall messages. Was annoying as having a wall
message is the default behavior of the commandline tools. Now it's
the other way around ie eg systemctl reboot --no-wall requires auth
to explicitly turn off the wall message.
2022-01-25 14:52:14 +01:00
Ludwig Nussel adefc8789b systemctl: simplify halt_main()
The code at this point is not able to tell whether it was called as
halt/poweroff/reboot or shutdown with time "now".
The code also takes a shortcut to skip logind if called as root.
That however means asking shutdown for immediate action won't trigger a
wall message.
As per https://github.com/systemd/systemd/issues/8424#issuecomment-374677315
all commands should trigger a wall message.
That simplifies the code as we can try logind first always.
2022-01-25 14:52:09 +01:00
Ludwig Nussel 90b1ec03b2 logind: fix wall message for immediate shutdowns
An elapse time of zero means NOW which should trigger a wall
message.
2022-01-25 14:46:37 +01:00
Luca Boccassi 0017415cc5 portable: add GetImageStateWithExtensions method
Allow to correctly query a layered portable service for
attached/detached state.
2022-01-25 06:44:27 +09:00
Yu Watanabe 9697662915 hostname: expose hardware serial through dbus
Closes #22119.
2022-01-24 21:09:37 +00:00
Yu Watanabe f338a496e4 NEWS: update 2022-01-25 03:03:09 +09:00
Yu Watanabe 1d2842d1e6 NEWS: mention about the regression in WireGuard 2022-01-25 02:56:20 +09:00
Yu Watanabe 0850fb78af Merge pull request #22236 from yuwata/fuzz-dhcp-server
fuzz-dhcp-server: three fixes or improvements
2022-01-25 02:19:22 +09:00
Yu Watanabe bf2a8b7b13 fuzz-dhcp-server: attach sd_event to make dhcp_server_cleanup_expired_leases() works in the fuzzer
Otherwise, most code paths in dhcp_server_handle_message() are not
evaluated by the fuzzer.
2022-01-25 00:05:02 +09:00
march1993 11cc2a5602 Update systemd.netdev.xml
Mind users to avoid use name gre0, gretap0 and erspan0 for GRE tunnels.
2022-01-24 14:58:14 +00:00
Zbigniew Jędrzejewski-Szmek 4a00b45fa6 user-runtime-dir: error out immediately if mkdir fails
We try to create two directories: /run/user and /run/user/<UID>. For the
first we check the return value and error out if creation fails. But for
the second one we continued based on the assumption that the subsequent
mount will immediately fail anyway. But this has the disadvantage that we
get a somewhat confusing error message:

janv. 23 22:04:31 nsfw systemd-user-runtime-dir[1660]: Failed to mount per-user tmpfs directory /run/user/1000: No such file or directory

Let's instead fail immediately with a precise error message.

For https://bugzilla.redhat.com/show_bug.cgi?id=2044100.
2022-01-24 13:06:45 +00:00
Luca Boccassi cb94b8acc5 Merge pull request #22203 from brauner/2022-01-21.procsubset.pid
core/namespace: allow using ProtectSubset=pid and ProtectHostname=tru…
2022-01-24 13:04:23 +00:00
Luca Boccassi aa3160b967 Merge pull request #22231 from yuwata/resolve-synthesize
resolve: synthesize several filtered name
2022-01-24 12:11:29 +00:00
Yu Watanabe 0590f1b58c fuzz-dhcp-server: duplicate input data
As `dhcp_server_handle_message()` -> `ensure_sane_request()` may modify
the input data, and that causes error in some fuzzing engine.
2022-01-24 19:37:37 +09:00
Yu Watanabe c3da2e4732 fuzz-dhcp-server: also set new lease elements correctly
The fuzzer does not send anything to the address, so it should be not
necessary, but just for safety.
2022-01-24 19:28:21 +09:00
Christian Brauner fbf90c0d5c core/namespace: s/normalize_mounts()/drop_unused_mounts()
Rename the normalize_mounts() helper to drop_unused_mounts. All the
helpers called in there get rid of mounts that are unused for a variety
of reasons. And whereas the helpers are aptly prefixed with "drop" the
overall helper isn't and instead uses "normalize".

Make it more obvious what the helper actually does by renaming it from
normalize_mounts() to drop_unused_mounts(). Readers of code calling this
helper will immediately see that it will get rid of unused mounts.

Link: https://github.com/systemd/systemd/issues/22206
2022-01-24 10:22:47 +01:00
Christian Brauner 1361f01577 core/namespace: allow using ProtectSubset=pid and ProtectHostname=true together
If a service requests both ProtectSubset=pid and ProtectHostname=true
then it will currently fail to start. The ProcSubset=pid option
instructs systemd to mount procfs for the service with subset=pid which
hides all entries other than /proc/<pid>. Consequently trying to
interact with the two files /proc/sys/kernel/{hostname,domainname}
covered by ProtectHostname=true will fail.

Fix this by only performing this check when ProtectSubset=pid is not
requested. Essentially ProtectSubset=pid implies/provides
ProtectHostname=true.
2022-01-24 09:41:28 +01:00
dependabot[bot] da9be066cb build(deps): bump github/codeql-action from 1.0.27 to 1.0.29
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1.0.27 to 1.0.29.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/cd783c8a29bdcf5a5c79c5137889e24651fa626c...384cfc42b2131df01c009d3d2eed7b78d8e8556e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-24 11:18:48 +03:00
Yu Watanabe 766527e8ae Merge pull request #22226 from yuwata/hostname-allow-to-override-hardware-vendor-and-model
hostname: allow to override hardware vendor and model
2022-01-24 06:55:29 +09:00
Yu Watanabe a6ba7d58f2 Merge pull request #22227 from yuwata/dhcp-server-fix-heap-buffer-overflow
sd-dhcp-server: fix heap buffer overflow
2022-01-24 06:55:02 +09:00