Yu Watanabe [Wed, 14 Sep 2022 03:25:08 +0000 (12:25 +0900)]
dissect-image: handle all non-negative return values as success
No functional changes, just coding syle update.
Yu Watanabe [Wed, 14 Sep 2022 03:21:56 +0000 (12:21 +0900)]
dissect-image: fix memleak on failure
Lennart Poettering [Thu, 15 Sep 2022 18:22:35 +0000 (19:22 +0100)]
update TODO
Yu Watanabe [Fri, 16 Sep 2022 00:26:07 +0000 (09:26 +0900)]
sd-device-monitor: do not trigger assertion when uid_map is not empty
Follow-up for
c0aa23cf1ed4b3cbbcaf8b19d47e6e29dc28c9a0.
drosdeck [Thu, 15 Sep 2022 19:41:01 +0000 (15:41 -0400)]
Fix Positivo DUO k116 key toggle touchpad
Yu Watanabe [Thu, 15 Sep 2022 19:18:58 +0000 (04:18 +0900)]
update TODO
David Edmundson [Wed, 14 Sep 2022 18:21:00 +0000 (19:21 +0100)]
xdg-autostart-service: expand tilde in Exec lines
In typical desktop file parsing it is expected that "~" expands to a
home directory.
Users may write an autostart file with "Exec=myCoolService
~/.someSpecialConfig" which worked before the systemd migration.
Yu Watanabe [Wed, 14 Sep 2022 21:07:22 +0000 (06:07 +0900)]
unit: drop ProtectClock=yes from systemd-udevd.service
This partially reverts
cabc1c6d7adae658a2966a4b02a6faabb803e92b.
The setting ProtectClock= implies DeviceAllow=, which is not suitable
for udevd. Although we are slowly removing cgropsv1 support, but
DeviceAllow= with cgroupsv1 is necessarily racy, and reloading PID1
during the early boot process may cause issues like #24668.
Let's disable ProtectClock= for udevd. And, if necessary, let's
explicitly drop CAP_SYS_TIME and CAP_WAKE_ALARM (and possibly others)
by using CapabilityBoundingSet= later.
Fixes #24668.
j00512545 [Thu, 15 Sep 2022 14:10:33 +0000 (22:10 +0800)]
fix typo in log
Yu Watanabe [Sun, 11 Sep 2022 18:02:31 +0000 (03:02 +0900)]
test-date: do not fail even on ~50 years later
Fixes #16181.
Yu Watanabe [Sun, 11 Sep 2022 20:13:30 +0000 (05:13 +0900)]
test-seccomp: support systems that sched_setscheduler() is already limited
Fixes #17078.
Heinrich Schuchardt [Mon, 12 Sep 2022 16:41:34 +0000 (18:41 +0200)]
meson: add libatomic dependency
Building with GCC 12.2 and binutils 2.39 fails on riscv64 Ubuntu Kinetic
with:
FAILED: systemd-oomd
/usr/bin/ld: systemd-oomd.p/src_oom_oomd-util.c.o:
in function `oomd_cgroup_context_acquire':
build/../src/oom/oomd-util.c:415:
undefined reference to `__atomic_exchange_1'
We have to link with -latomic.
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Antonio Alvarez Feijoo [Thu, 15 Sep 2022 08:15:44 +0000 (10:15 +0200)]
bash-completion: add missing options to systemd-cryptenroll
Yu Watanabe [Wed, 14 Sep 2022 21:22:36 +0000 (06:22 +0900)]
Merge pull request #24671 from mrc0mmand/even-more-codeql
ci: enable a couple more possibly useful CodeQL queries
Frantisek Sumsal [Wed, 14 Sep 2022 18:36:40 +0000 (20:36 +0200)]
oom: include a header file instead of a source file
Yu Watanabe [Wed, 14 Sep 2022 21:03:57 +0000 (06:03 +0900)]
tree-wide: fix typo
Frantisek Sumsal [Wed, 14 Sep 2022 20:04:15 +0000 (22:04 +0200)]
ci: fix a couple of typos
Frantisek Sumsal [Wed, 14 Sep 2022 19:32:33 +0000 (21:32 +0200)]
ci: enable a couple more possibly useful CodeQL queries
Frantisek Sumsal [Wed, 14 Sep 2022 17:13:10 +0000 (19:13 +0200)]
ci: rename codeql-analysis.yml to codeql.yml
Just to be consistent with other repos under the systemd umbrella.
Yu Watanabe [Tue, 13 Sep 2022 20:05:04 +0000 (05:05 +0900)]
pid1: introduce dbus properties WatchdogDevice and friends
Closes #24665.
Yu Watanabe [Wed, 14 Sep 2022 11:27:07 +0000 (20:27 +0900)]
Merge pull request #24669 from dtardon/nested-asserts
Use nested ASSERT_PTR
David Tardon [Fri, 9 Sep 2022 08:19:29 +0000 (10:19 +0200)]
tree-wide: use nested ASSERT_PTR
David Tardon [Fri, 9 Sep 2022 08:04:36 +0000 (10:04 +0200)]
macro-fundamental: allow to nest ASSERT_PTR
E.g.,
int job_frobnicate(Job *j) {
Unit *u = ASSERT_PTR(ASSERT_PTR(j)->unit);
...
}
Yu Watanabe [Tue, 13 Sep 2022 20:31:10 +0000 (05:31 +0900)]
Merge pull request #24663 from mrc0mmand/codeql-follow-up
A couple of CodeQL tweaks and follow ups
Nick Rosbrook [Wed, 7 Sep 2022 17:25:13 +0000 (13:25 -0400)]
pstore: do not try to load all known pstore modules
Commit
70e74a5997 ("pstore: Run after modules are loaded") added After=
and Wants= entries for all known kernel modules providing a pstore.
While adding these dependencies on systems where one of the modules is
not present, or not configured, should not have a real affect on the
system, it can produce annoying error messages in the kernel log. E.g.
"mtd device must be supplied (device name is empty)" when the mtdpstore
module is not configured correctly.
Since dependencies cannot be removed with drop-ins, if a distro wants to
remove some of these modules from systemd-pstore.service, they need to
patch units/systemd-pstore.service.in. On the other hand, if they want
to append to the dependencies this can be done by shipping a drop-in.
Since the original intent of the previous commit was to fix [1], which
only requires the efi_pstore module, remove all other kernel module
dependencies from systemd-pstore.service, and let distros ship drop-ins
to add dependencies if needed.
[1] https://github.com/systemd/systemd/issues/18540
Yu Watanabe [Tue, 13 Sep 2022 20:29:00 +0000 (05:29 +0900)]
Merge pull request #24662 from mrc0mmand/test-exec-deserialization-tweaks
test: drop the use of `tempfile.mktemp()`
Frantisek Sumsal [Tue, 13 Sep 2022 19:30:10 +0000 (21:30 +0200)]
ci: limit scope for the CodeQL scan
Don't run the workflow unnecessarily for non-{cpp,python} related changes.
Frantisek Sumsal [Tue, 13 Sep 2022 19:28:00 +0000 (21:28 +0200)]
ci: drop LGTM stuff and move remaining bits into a new location
Frantisek Sumsal [Tue, 13 Sep 2022 19:18:44 +0000 (21:18 +0200)]
ci: run CodeQL on push to main/stable branches as well
Since we need results for the base branches as well in order to have
something to compare against.
Follow-up to
cbe25d0dccdd3f2901a1e74a665c068f42dae9f5.
Frantisek Sumsal [Tue, 13 Sep 2022 18:14:48 +0000 (20:14 +0200)]
test: drop the use of `tempfile.mktemp()`
and use `uuid.uuid4()` instead to generate a sufficiently pseudo-random
file name.
Resolves: https://github.com/systemd/systemd/security/code-scanning/142
Frantisek Sumsal [Tue, 13 Sep 2022 18:07:22 +0000 (20:07 +0200)]
test: drop forgotten format()
Follow-up to
fda00958bb08f2920cf8d42c5212fb45bdb42d6d.
Frantisek Sumsal [Tue, 13 Sep 2022 17:11:25 +0000 (19:11 +0200)]
ci: run CodeQL on every PR
Since LGTM is no longer enabled for the systemd repo (as it's going to
be discontinued by the EOY), let's run CodeQL on every PR instead to
replace it.
David Edmundson [Tue, 13 Sep 2022 12:06:09 +0000 (13:06 +0100)]
xdg-autostart-service: Use common boolean parser
Technically the desktop entry specification says value should be the
string "true" or "false". Pragmatically every desktop has their own
parsing rules which are typically less strict on how to interpret other
values.
This caused some regressions downstream when we switched to the
xdg-autostart-generator where existing handmade files contained values
with "True" or "False".
Zbigniew Jędrzejewski-Szmek [Sun, 4 Sep 2022 08:47:28 +0000 (10:47 +0200)]
TODO: various things about partitioning
Michal Sekletar [Fri, 9 Sep 2022 11:38:58 +0000 (13:38 +0200)]
logind: schedule idle check full interval from now if we couldn't figure out atime timestamp
Yu Watanabe [Tue, 13 Sep 2022 12:08:10 +0000 (21:08 +0900)]
Merge pull request #24272 from dtardon/asserts
Use ASSERT_PTR more
Yu Watanabe [Tue, 13 Sep 2022 07:57:11 +0000 (16:57 +0900)]
boot: fix missing initialization
Fixes CID#
1497847.
Yu Watanabe [Tue, 13 Sep 2022 12:05:42 +0000 (21:05 +0900)]
Merge pull request #24651 from yuwata/openssl-util
openssl-util: trivial cleanups
Yu Watanabe [Tue, 13 Sep 2022 08:07:50 +0000 (17:07 +0900)]
creds-util: fix NULL pointer dereference
Fixes CID#
1497840.
Yu Watanabe [Tue, 13 Sep 2022 08:03:01 +0000 (17:03 +0900)]
openssl-util: use assert() if no side effect
Yu Watanabe [Tue, 13 Sep 2022 08:01:26 +0000 (17:01 +0900)]
openssl-util: drop meaningless assertion
As the type of 'msz' is int.
Fixes CID#
1497842.
David Tardon [Fri, 9 Sep 2022 08:31:24 +0000 (10:31 +0200)]
dbus-execute: inline variable definition
Fixes a compiler warning:
../src/core/dbus-execute.c:460:22: error: unused variable 'c' [-Werror,-Wunused-variable]
ExecContext *c = ASSERT_PTR(userdata);
David Tardon [Wed, 10 Aug 2022 12:00:53 +0000 (14:00 +0200)]
tree-wide: check parameter before dereferencing
David Tardon [Tue, 9 Aug 2022 12:35:15 +0000 (14:35 +0200)]
tree-wide: use ASSERT_PTR more
Yu Watanabe [Mon, 12 Sep 2022 14:41:00 +0000 (23:41 +0900)]
Merge pull request #23087 from yuwata/udev-watch
udev: resolve race in saving inotify watch handle
Yu Watanabe [Mon, 12 Sep 2022 14:40:34 +0000 (23:40 +0900)]
Merge pull request #23043 from yuwata/udev-node-use-flock
udev-node: use flock() for symlink stack directory
Ansgar Burchardt [Mon, 12 Sep 2022 12:55:14 +0000 (14:55 +0200)]
base-filesystem.c: add trailing zero byte for s390x entry
Hans de Goede [Mon, 29 Aug 2022 15:28:37 +0000 (17:28 +0200)]
hwdb: Fix Acer Aspire One AOD270/Packard Bell Dot keymappings
The Acer Aspire One AOD270 and the same hardware rebranded as
Packard Bell Dot SC need a couple of keymap fixups:
1. The switch-video-mode key does not do anything. Standard acer-wmi
maps scancode 0x61 to KEY_IGNORE since typically these events are
duplicate with the ACPI video bus. But on these models the ACPI video
bus does not send events for this key, so map it.
2. The Brightness up / down hotkeys send atkbd scancode 0xce / 0xef
which by default are mapped to KEY_KPPLUSMINUS and KEY_MACRO.
These actually are duplicate events with the ACPI video bus,
so map these to KEY_IGNORE.
Lennart Poettering [Sun, 11 Sep 2022 23:13:44 +0000 (00:13 +0100)]
update TODO
Lennart Poettering [Sun, 11 Sep 2022 23:13:44 +0000 (00:13 +0100)]
update TODO
Yu Watanabe [Thu, 28 Apr 2022 10:28:11 +0000 (19:28 +0900)]
test: add testcase for udev-watch
Yu Watanabe [Thu, 14 Apr 2022 21:38:33 +0000 (06:38 +0900)]
sd-device: move device_new_from_watch_handle_at() to udev-watch.c
And drop unused watch handle related functions.
Yu Watanabe [Thu, 28 Apr 2022 07:42:12 +0000 (16:42 +0900)]
udev: warn on udev_watch_{begin,end}() failure
Yu Watanabe [Thu, 28 Apr 2022 07:39:49 +0000 (16:39 +0900)]
udev: drop unnecessary call of udev_watch_end()
As it is already called by udev_event_execute_rules().
Yu Watanabe [Thu, 28 Apr 2022 06:54:06 +0000 (15:54 +0900)]
udev: use rm_rf() to remove old watch directory
Yu Watanabe [Thu, 14 Apr 2022 21:31:21 +0000 (06:31 +0900)]
udev-watch: remove symlink for saving inotify watch handle only when it is owned by the processing device
Before removing symlinks that stores watch handles, this makes udev
worker check if the symlink is owned by the processing device.
Then, we can avoid TOCTOU and drop the try-and-wait loop.
This partially reverts
2d3af41f0e837390b734253f5c4a99a9f33c53e3.
Yu Watanabe [Fri, 15 Apr 2022 00:42:15 +0000 (09:42 +0900)]
udev: ignore IN_IGNORED inotify event earlier
Yu Watanabe [Thu, 14 Apr 2022 21:08:13 +0000 (06:08 +0900)]
udev: not necessary to return 1 from on_inotify()
Yu Watanabe [Sun, 11 Sep 2022 16:17:36 +0000 (01:17 +0900)]
Merge pull request #24637 from mrc0mmand/TEST-75-tweaks
test: make the resolved notifications check a bit more robust
Frantisek Sumsal [Sun, 11 Sep 2022 12:17:56 +0000 (14:17 +0200)]
test: make the resolved notifications check a bit more robust
Let's parse the resolved JSON notifications via `jq` and check them in a
bit more "controlled" manner - e.g. until now the `grep` was checking just
a one gigantic JSON string, as all received notifications via the
varlink socket are terminated by a NUL character, not a newline.
Also, as the notification delivery is asynchronous, retry the check
a couple of times if it fails (spotted in C8S jobs):
```
[ 2891.935879] testsuite-75.sh[36]: + : '--- nss-resolve/nss-myhostname tests'
[ 2891.935988] testsuite-75.sh[36]: + run getent -s resolve hosts ns1.unsigned.test
[ 2891.936542] testsuite-75.sh[177]: + getent -s resolve hosts ns1.unsigned.test
[ 2891.937499] testsuite-75.sh[178]: + tee /tmp/tmp.pqjNvbQ2eS
[ 2891.939977] testsuite-75.sh[178]: 10.0.0.1 ns1.unsigned.test
[ 2891.940258] testsuite-75.sh[36]: + grep -qE '^10\.0\.0\.1\s+ns1\.unsigned\.test' /tmp/tmp.pqjNvbQ2eS
[ 2891.942235] testsuite-75.sh[189]: + grep -qF '[10,0,0,1]'
[ 2891.942577] testsuite-75.sh[188]: + grep -aF ns1.unsigned.test /tmp/notifications.txt
[ 2891.943978] systemd[1]: testsuite-75.service: Child 36 belongs to testsuite-75.service.
[ 2891.944112] systemd[1]: testsuite-75.service: Main process exited, code=exited, status=1/FAILURE
[ 2891.944215] systemd[1]: testsuite-75.service: Failed with result 'exit-code'.
```
Frantisek Sumsal [Sun, 11 Sep 2022 12:16:34 +0000 (14:16 +0200)]
test: install jq into all images
Frantisek Sumsal [Sat, 10 Sep 2022 19:42:26 +0000 (19:42 +0000)]
Merge pull request #24593 from jamacku/main
Update `advanced-issue-labeler` action - `@v1` -> `@v2`
Lennart Poettering [Fri, 9 Sep 2022 21:06:58 +0000 (23:06 +0200)]
tpm2-util: avoid trial
Let's avoid trial mode for putting together policies if we can, and use
the real policy whenever we can pull it off.
Fixes: #24401
Yu Watanabe [Fri, 9 Sep 2022 18:21:37 +0000 (03:21 +0900)]
test-29-portable: set timeout for 'portablectl reattach'
Then, the test can fail earlier than the timeout of the whole test
specified by $QEMU_TIMEOUT=.
This is useful when we try to run the test multiple times.
Workaround for issue #24147.
Yu Watanabe [Fri, 9 Sep 2022 17:52:54 +0000 (02:52 +0900)]
Merge pull request #24618 from yuwata/udev-split-synthesizing
udev: shorten synthesize_change() a bit
Yu Watanabe [Fri, 9 Sep 2022 15:33:43 +0000 (00:33 +0900)]
blockdev-util: split out blockdev_reread_partition_table()
No functional changes, just refactoring.
Lennart Poettering [Fri, 9 Sep 2022 16:18:37 +0000 (18:18 +0200)]
Merge pull request #24458 from poettering/stub-embedd-sig
optionally, embed PCR signature and public key in new sd-stub PE sections
Yu Watanabe [Fri, 9 Sep 2022 15:17:46 +0000 (00:17 +0900)]
udevd: use partition enumerator at one more place
No functional changes, just refactoring.
Yu Watanabe [Fri, 9 Sep 2022 14:32:15 +0000 (23:32 +0900)]
Merge pull request #24609 from yuwata/sd-device-enumerator-check-sysname
sd-device-enumerator: check sysname earlier
Yu Watanabe [Fri, 9 Sep 2022 14:31:19 +0000 (23:31 +0900)]
Merge pull request #24611 from yuwata/loop-util-refactoring
loop-util: several cleanups
Yu Watanabe [Thu, 8 Sep 2022 20:25:55 +0000 (05:25 +0900)]
blockdevi-util: also check sysname when enumerating partitions
Yu Watanabe [Fri, 9 Sep 2022 11:55:45 +0000 (20:55 +0900)]
sd-device-enumerator: use _cleanup_free_ attribute for safety
No functional changes, just improve readability.
Suggested by https://github.com/systemd/systemd/pull/24601#discussion_r966883459.
Yu Watanabe [Fri, 9 Sep 2022 11:52:41 +0000 (20:52 +0900)]
sd-device-enumerator: always ignore ENOENT from opendir()
But logs all errors.
Yu Watanabe [Thu, 8 Sep 2022 19:26:15 +0000 (04:26 +0900)]
sd-device-enumerator: check sysname earlier
Lennart Poettering [Fri, 26 Aug 2022 09:11:07 +0000 (11:11 +0200)]
update TODO
Lennart Poettering [Fri, 9 Sep 2022 09:24:12 +0000 (11:24 +0200)]
man: say early what a unified kernel image/UKI is
Lennart Poettering [Fri, 9 Sep 2022 09:09:30 +0000 (11:09 +0200)]
man: be more careful regarding TPM vs. TPM2
We support PCR measurements for both classic TPM1.2 and TPM2, hence just
say "TPM" generically in that context. But the signed policies are
exclusive to TPM2, hence always say TPM2 there.
We mostly got that right, except at one place. Fix that.
Lennart Poettering [Fri, 9 Sep 2022 09:08:35 +0000 (11:08 +0200)]
man: document the new .pcrsig/.pcrpkey sections for unified kernel images
Lennart Poettering [Thu, 25 Aug 2022 15:16:52 +0000 (17:16 +0200)]
tmpfiles: copy PCR sig/pkey from initrd /.extra/ into /run/
Now that sd-stub will place the PCR signature and its public key in
the initrd's /.extra/ directory, let's copy it from there into /run/
from userspace. This is done because /.extra/ is on the initrd's tmpfs
which will be emptied during the initrd → host transition. Since we want
these two files to survive we'll copy them – if they exist – into /run/
where they will survive the transition.
Thus, with this last change the files will have safely propagated from
their PE sections into files in /run/ where userspace can find them
The paths in /run/ happen to be the exact ones that
systemd-cryptenroll/systemd-cryptsetup/systemd-creds look for them.
Lennart Poettering [Thu, 25 Aug 2022 14:55:49 +0000 (16:55 +0200)]
stub: pass .pcrsig and .pcrpkey PE sections as cpio into invoked kernel
Pick up the two new sections in sd-stub and pass them as initrds into
the booted kernels, where they'll show up as
/.extra/tpm2-pcr-signature.json and /.extra/tpm2-pcr-public-key.pem in
the initrd file system.
The initrd is then supposed to pick these files up from there and save
them at a place that will survive into the host OS.
Lennart Poettering [Thu, 25 Aug 2022 14:55:01 +0000 (16:55 +0200)]
stub: add new special PE sections ".pcrsig" and ".pcrpkey" in unified kernels
These aren't wired up yet to do anything useful. For now we just define
them.
This sections are supposed to carry a signature for expected
measurements on PCR 11 if this kernel is booted, in the JSON format
"systemd-measure sign" generates, and the public key used for the
signature.
The idea is to embedd the signature and the public key in unified
kernels and making them available to userspace, so that userspace can
easily access them and enroll (for which the public key is needed) or
unlock (for which the PCR signature is needed) LUKS2 volumes and
credentials that are bound to the currently used kernel version stream.
Why put these files in PE sections rather than just into simple files in
the initrd or into the host fs?
The signature cannot be in the initrd, since it is after all covering
the initrd, and thus the initrd as input for the calculation cannot
carry the result of the calculation. Putting the signature onto the root
fs sucks too, since we typically want to unlock the root fs with it,
hence it would be inaccessible for it's primary purpose then.
The public key could be in the initrd or in the root fs, there's no
technical restriction for that. However, I still think it's a good idea
to put it in a PE section as well, because this means the piece of code
that attaches the signature can also attach the public key easily in one
step, which is nice since it allows separating the roles of the
kernel/initrd/root fs builder, and the role of the signer, and the
former doesn't have to have knowledge about what the latter is going to
add to the image.
Note that the signature section is excluded from the TPM measurements
sd-stub does about its resource sections, since – as mentioned – it's
the expected output of the signing operation whose input are the
measurements, hence it cannot also be input to them. The public key
section is included in the measurements however.
Lennart Poettering [Thu, 25 Aug 2022 14:54:03 +0000 (16:54 +0200)]
cpio: add helper for packing cpios of literally specified data blobs
Let's add simple helpers for passing data blobs from the stub into the
booted kernel as initrds that are generated on-the-fly.
(Note used yet, a later commit will make use of this)
Suraj Krishnan [Tue, 26 Apr 2022 22:09:02 +0000 (17:09 -0500)]
Implement DNS notifications from resolved via varlink
* The new varlink interface exposes a method to subscribe to DNS
resolutions on the system. The socket permissions are open for owner and
group only.
* Notifications are sent to subscriber(s), if any, after successful
resolution of A and AAAA records.
This feature could be used by applications for auditing/logging services
downstream of the resolver. It could also be used to asynchronously
update the firewall. For example, a system that has a tightly configured
firewall could open up connections selectively to known good hosts based
on a known allow-list of hostnames. Of course, updating the firewall
asynchronously will require other design considerations (such as
queueing packets in the user space while a verdict is made).
See also:
https://lists.freedesktop.org/archives/systemd-devel/2022-August/048202.html
https://lists.freedesktop.org/archives/systemd-devel/2022-February/047441.html
Yu Watanabe [Fri, 9 Sep 2022 00:32:07 +0000 (09:32 +0900)]
Merge pull request #24557 from yuwata/repart
repart: fix partition size calculation
Yu Watanabe [Mon, 5 Sep 2022 13:11:55 +0000 (22:11 +0900)]
test-58-repart: add test case for issue #24553
Yu Watanabe [Mon, 5 Sep 2022 16:58:34 +0000 (01:58 +0900)]
repart: make existing partition can be also 'dropped'
Previously, when an existing partition cannot grow, then entire process
fails. This makes such an existing partion handled as an foreign
partition, i.e. it is not managed by us.
Yu Watanabe [Mon, 5 Sep 2022 12:57:38 +0000 (21:57 +0900)]
repart: check if existing partitions can grow
Fixes #24553.
Yu Watanabe [Mon, 5 Sep 2022 12:56:49 +0000 (21:56 +0900)]
repart: split out free_area_{current,min}_end() from free_area_available_for_new_partitions()
No actual code changes, just preparation for later commits.
Yu Watanabe [Mon, 5 Sep 2022 16:23:19 +0000 (01:23 +0900)]
repart: reset assignments by previous context_allocate_partitions()
The function context_allocate_partitions() may be called multiple times.
If this is called multiple times, then dropped partitions may still
assigned to free area.
Yu Watanabe [Sun, 4 Sep 2022 09:54:52 +0000 (18:54 +0900)]
repart: do not assign new size larger than acquired or the specified maximum
The acquired size may be larger than the requested maximum. So, let's
cap the value.
Note, at the final phase, the acquired size should be larger than the
requested minimum. Hence, the assertion about that is added.
Yu Watanabe [Sun, 4 Sep 2022 09:48:15 +0000 (18:48 +0900)]
repart: set new size for foreign partitions at first
Otherwise, the new size may be larger than the acquired one.
Yu Watanabe [Sun, 4 Sep 2022 09:51:55 +0000 (18:51 +0900)]
repart: anyway run loop at the end even if the loop will be restarted later
The order of the partitions processed in each phase does not change
result for the first two phase (PHASE_OVERCHARGE and PHASE_UNDERCHARGE).
Yu Watanabe [Sun, 4 Sep 2022 06:20:29 +0000 (15:20 +0900)]
repart: make scale_by_weight() always succeed
Yu Watanabe [Sun, 4 Sep 2022 09:43:55 +0000 (18:43 +0900)]
repart: split out context_grow_partition_one()
No actual code changes, just refactoring.
Yu Watanabe [Sun, 4 Sep 2022 09:26:04 +0000 (18:26 +0900)]
repart: introduce partition_{min,max}_padding()
No actual code changes, just refactoring.
Yu Watanabe [Sun, 4 Sep 2022 09:25:03 +0000 (18:25 +0900)]
repart: ensure partition_max_size() >= partition_min_size()
Yu Watanabe [Sun, 4 Sep 2022 06:19:18 +0000 (15:19 +0900)]
repart: make partition_max_size() return UINT64_MAX if not specified
Previously, it did not return UINT64_MAX, but a huge value, as
`UINT64_MAX / grain_size * grain_size != UINT64_MAX`.
This also drops unnecessary conditions.
Yu Watanabe [Sun, 4 Sep 2022 09:24:13 +0000 (18:24 +0900)]
repart: constify partition_min_size()
Yu Watanabe [Mon, 5 Sep 2022 16:42:44 +0000 (01:42 +0900)]
repart: rename variables in config_parse_weight()
This is for Weight= or PaddingWeight=, not for Priority=.
No actual code changes, just refactoring.
Yu Watanabe [Thu, 8 Sep 2022 20:12:07 +0000 (05:12 +0900)]
loop-util: do not try to enumerate partitions twice