Commit Graph
41847 Commits
Author SHA1 Message Date
Yu Watanabe 41a95b18bd dissect: support to unmount image without root partition
Fixes #25480.
2022-12-02 02:58:44 +09:00
Yu Watanabe 040d343903 dissect: use sd-device to find and open loopback block device 2022-12-02 02:52:06 +09:00
Zbigniew Jędrzejewski-Szmek c3f0bff945 bootctl: use output mode where "[]" is written instead for empty output
It's easier for the caller if output is always a list, even if there are no
entries.
2022-12-01 18:14:52 +01:00
Zbigniew Jędrzejewski-Szmek 8525bb369a shared/json: optimize appending objects to arrays
When repeatedly appending an object to a growing array, we would create a new
array larger by one slot, insert all the old entries and the new element with
ref count bumps into the new array, and then unref the old array.

This would cause problems when building an array with more than a few thousand
elements. If userdbctl is modified to construct an array,
'userdbctl --json=pretty group >/dev/null' with 31k groups:
0.74s   (existing code)
102.17s (returning an array)
0.79s   (with this patch)

We append arrays in various places, so it seems nice to make this generally
fast.
2022-12-01 18:13:21 +01:00
Zbigniew Jędrzejewski-Szmek b0eeb94588 shared/json: make it possible to specify source name for strings too, add tests
The source would be set implicitly when parsing from a named file. But
it's useful to specify the source also for cases where we're parsing a
ready string. I noticed the lack of this API when trying to write tests,
but it seems generally useful to be specify a source name when parsing
things.
2022-12-01 18:02:06 +01:00
Zbigniew Jędrzejewski-Szmek b570204a97 bootctl: make --json output normal json
We would output a sequence of concatenated JSON strings. 'jq' accepts such
output without fuss, and can even automatically build an array with --slurp/-s.
Nevertheless, parsing this format is more effort for the reader, since it's not
"standard JSON". E.g. Python's json module cannot do this out-of-the-box, but
needs some loop with json.JSONDecoder.raw_decode() and then collecting the
objects into an array. Such streaming output make sense in case of logs, where
we stream the output and it has no predefined length. But here we expect at
most a few dozen entries, so it's nicer to write normal JSON that is trivial to
parse.

I'm treating this is a bugfix and not attempting to provide compatibility
backwards. I don't think the previous format was seeing much use, and it's
trivial to adapt to the new one.
2022-12-01 18:00:49 +01:00
Lennart Poettering 2e3944b872 blkid-util: define enum for blkid_do_safeprobe() return values
libblkid really should define an enum for this on its own, but it
currently doesn't and returns literal numeric values. Lets make this
more readable by adding our own symbolic names via an enum.
2022-12-01 15:43:26 +01:00
Lennart Poettering ef1f0a14fa tree-wide: use errno_or_else() more, instead of homegrown checks 2022-12-01 15:42:46 +01:00
Daan De Meyer 003cb0e046 Merge pull request #25579 from DaanDeMeyer/copy-graceful-symlinks
repart: Ignore copy failures for unsupported file types
2022-12-01 13:47:14 +01:00
Daan De Meyer 336ae0e71d repart: Ignore copy failures for unsupported file types
e.g. vfat doesn't support symlinks, sockets, fifos, etc so let's ignore
any copy failures related to unsupported file types when populating
filesystems.
2022-12-01 12:14:35 +01:00
Lennart Poettering f0c24a0ed8 Merge pull request #25554 from enr0n/follow-on-25509
oomd: only check prefix_uid when uid != 0
2022-12-01 12:04:23 +01:00
Lennart Poettering 73d88b806b dissect: rework DISSECT_IMAGE_ADD_PARTITION_DEVICES + DISSECT_IMAGE_OPEN_PARTITION_DEVICES
Curently, these two flags were implied by dissect_loop_device(), but
that's not right, because this means systemd-gpt-auto-generator will
dissect the root block device with these flags set and that's not
desirable: the generator should not cause the partition devices to be
created (we don't intend to use them right-away after all, but expect
udev to find/probe them first, and then mount them though .mount units).
And there's no point in opening the partition devices, since we do not
intend to mount them via fds either.

Hence, rework this: instead of implying the flags, specify them
explicitly.

While we are at it, let's also rename the flags to make them more
descriptive:

DISSECT_IMAGE_MANAGE_PARTITION_DEVICES becomes
DISSECT_IMAGE_ADD_PARTITION_DEVICES, since that's really all this does:
add the partition devices via BLKPG.

DISSECT_IMAGE_OPEN_PARTITION_DEVICES becomes
DISSECT_IMAGE_PIN_PARTITION_DEVICES, since we not only open the devices,
but keep the devices open continously (i.e. we "pin" them).

Also, drop the DISSECT_IMAGE_BLOCK_DEVICE combination flag, since it is
misleading, i.e. it suggests it was appropriate to specify on all
dissected blocking devices, but that's precisely not the case, see the
systemd-gpt-auto-generator case. My guess is that the confusion around
this was actually the cause for this bug we are addressing here.

Fixes: #25528
2022-12-01 11:32:30 +01:00
Ray Strode 9fe26523a1 terminal-util: Set OPOST when setting ONLCR
reset_terminal_fd sets certain minimum required terminal attributes
that systemd relies on.

One of those attributes is `ONLCR` which ensures that when a new line
is sent to the terminal, that the cursor not only moves to the next
line, but also moves to the very beginning of that line.

In order for `ONLCR` to work, the terminal needs to perform output
post-processing. That requires an additional attribute, `OPOST`,
which reset_terminal_fd currently fails to ensure is set.

In most cases `OPOST` (and `ONLCR` actually) are both set anyway, so
it's not an issue, but it could be a problem if, e.g., the terminal was
put in raw mode by a program and the program unexpectedly died before
restoring settings.

This commit ensures when `ONLCR` is set `OPOST` is set too, which is
the only thing that really makes sense to do.
2022-12-01 11:29:21 +01:00
Daan De Meyer 494f7fc096 copy: Add COPY_GRACEFUL_WARN
When copying between filesystems, sometimes the target filesystem
might not support symlinks/fifos/sockets/... and we want to log and
ignore  any failures to copy such files when copying. Let's introduce
a new flag to enable this behavior.
2022-12-01 10:03:31 +01:00
Yu Watanabe 6b15f2eff9 sd-netlink: fix assertion triggered by message_get_serial()
This fixes an issue introduced by 7b34bae3b1.

Fixes https://github.com/systemd/systemd/pull/25565#issuecomment-1331353945.
2022-11-30 10:16:17 +00:00
Yu Watanabe f3c8cb27b1 mkfs-util: fix memleak
Fixes an issure introduced by c75cf0164c.

Fixes CID#1501073.
2022-11-30 08:21:40 +01:00
Yu Watanabe 4bbe559b5c network: address: use ASSERT_PTR() 2022-11-30 10:23:58 +09:00
Yu Watanabe aaad20e0e1 network: address: always update link state when an address is removed
The removed address might be in the tentative state.
2022-11-30 10:23:33 +09:00
Yu Watanabe f3016c40e3 network: add missing assertion 2022-11-30 10:18:03 +09:00
Michal Koutný 862be54d57 cgtop: Update code comments 2022-11-30 09:40:56 +09:00
Yu Watanabe dc4f4c6e36 Merge pull request #25561 from poettering/btrfs-quota-opath-fix
tmpfiles: fix btrfs quota logic
2022-11-30 09:30:13 +09:00
Nick Rosbrook 3c0562778b oomd: fix doc comment for oomd_fetch_cgroup_oom_preference
Explicitly state that ManagedOOMPreference is always honored when the
unit's cgroup is owned by root.
2022-11-29 16:01:58 -05:00
Nick Rosbrook 66bc4f6fb1 oomd: only check prefix_uid when uid != 0
If the cgroup is owned by root there is no need to get prefix_uid. Only
check prefix_uid when uid != 0, and then set MANAGED_OOM_PREFERENCE_NONE
and return early if uid != prefix_uid.
2022-11-29 16:01:54 -05:00
Lennart Poettering fb3921b823 dissect-image: merge handlers for 4 different partition designators into one
These four branches execute the exact same code these days, hence merge
them into one.
2022-11-29 18:34:59 +01:00
Lennart Poettering df4524cb37 dissect-image: don't probe swap partitions needlessly
We already know it's swap, we can assume it's also fstype swap, and
don#t need to probe things later again.
2022-11-29 18:34:29 +01:00
Lennart Poettering e6eb581cb0 Merge pull request #25558 from poettering/fdisk-id128
add generic uuid/id128 helpers for libfdisk too
2022-11-29 16:06:10 +01:00
Lennart Poettering e3b9a5ff26 blkid: add helpers that get gpt partition uuid as sd_id128_t
just some refactoring to make things simpler.
2022-11-29 16:05:17 +01:00
Lennart Poettering e6d1d4c0b3 btrfs-util: convert O_PATH if necessary, in btrfs quota call
Fixes: #25468
2022-11-29 15:35:06 +01:00
Lennart Poettering 698bc1861e blockdev-util: move O_PATH fd conversion into btrfs_get_block_device_fd() to shorten things
And let's use a simple call to the new fd_reopen_condition() helper
there.
2022-11-29 15:34:27 +01:00
Lennart Poettering f1cab3d6dc btrfs-util: convert to fd_reopen_condition() 2022-11-29 15:33:51 +01:00
Lennart Poettering 5f5865f0ad fd-util: add new helper fd_reopen_conditional()
This is a wrapper around fd_reopen() that will reopen an fd if the
F_GETFL flags indicate this is necessary, and otherwise not.

This is useful for various utility calls that shall be able to operate
on O_PATH and without it, and might need to convert between the two
depending on what's passed in.
2022-11-29 15:32:47 +01:00
Jan Janssen f6d59e2ebf boot: Only do full driver initialization in VMs
Doing the reconnect dance on some real firmware creates huge delays on
boot. This should not be needed anymore as we now ask the firmware to
make console devices and xbootldr partitions available explicitly in a
more targeted fashion.

Fixes: #25510
2022-11-29 15:05:56 +01:00
Jan Janssen 7f19be808c boot: Make sure all partitions drivers are connected 2022-11-29 15:03:52 +01:00
Jan Janssen b99bf58118 boot: Use EFI_BOOT_MANAGER_POLICY_PROTOCOL to connect console devices 2022-11-29 15:03:52 +01:00
Lennart Poettering 0461375326 Merge pull request #25385 from drvink/main
systemd: Support OOMPolicy in scope units
2022-11-29 14:40:18 +01:00
Lennart Poettering 63b96eb9b3 fdisk-util: add fdisk_partition_get_type_as_id128() helper
Let's also add an easy accessor for the other per-partition UUID.
2022-11-29 12:07:15 +01:00
Lennart Poettering 02e32aa629 fdisk-util: add fdisk_partition_get_uuid_as_id128() helper
Inspired by: #25534
2022-11-29 12:07:15 +01:00
Joerg Behrmann 0ccfd3564b kernel-install: Add uki layout
Currently the kernel-install man page only documents the bls layout for use
with the boot loader spec type #1. 90-loaderentry.install uses this layout to
generate loader entries and copy the kernel image and initrd to $BOOT.

This commit documents a second layout "uki" and adds 90-uki-copy.install,
which copies a UKI "uki.efi" from the staging area or any file with the .efi
extension given on the command line to
$BOOT/EFI/Linux/$ENTRY_TOKEN-$KERNEl_VERSION(+$TRIES).efi

This allows for both locally generated and distro-provided UKIs to be handled
by kernel-install.
2022-11-29 11:33:27 +01:00
Daan De Meyer 49d1fcd01c Merge pull request #25132 from yuwata/core-device-inactivate-removed-device-on-switching-root
core/device: inactivate removed device on switching root
2022-11-29 10:27:34 +01:00
Daan De Meyer bf030f5569 repart: Add split path to table output 2022-11-29 10:08:51 +01:00
Daan De Meyer db1d4e6b97 repart: Make sure we cleanup image file on failure if we create it 2022-11-29 10:08:51 +01:00
Daan De Meyer 448cfb7f37 repart: Inline Partition and Context typedefs 2022-11-29 10:08:51 +01:00
Daan De Meyer ea09f92ce4 repart: Remove leftover debug statement 2022-11-29 10:08:51 +01:00
Daan De Meyer cc751c75a0 repart: Move backing_fd, node and from_scratch variables into Context 2022-11-29 10:08:51 +01:00
Daan De Meyer a2d7c42e97 repart: Make sure split partition files are cleaned up on failure 2022-11-29 10:08:51 +01:00
Daan De Meyer 621083481b repart: Refactor split names 2022-11-29 10:08:51 +01:00
Daan De Meyer 7d07030eea repart: Make sure we clean up temporary files created in context_minimize() 2022-11-29 10:08:49 +01:00
Yu Watanabe f334a8c8e9 Merge pull request #25536 from yuwata/sd-netlink-several-fixes
sd-netlink: several fixes
2022-11-29 10:35:07 +09:00
Yu Watanabe c167ed0fd1 Merge pull request #25552 from yuwata/network-ndisc-trivial-fixes
network: NDisc: trivial fixes
2022-11-29 10:33:33 +09:00
Luca Boccassi 8936a2a8f0 Merge pull request #25532 from Werkov/fix-cgtop-args
cgtop: Do not rewrite -P or -k options
2022-11-28 22:20:47 +01:00