Skip to content

Change systemd fsck device dependencies to Wants - #18791

Draft
Pawel Winogrodzki (PawelWMS) wants to merge 1 commit into
microsoft:3.0-devfrom
PawelWMS:pawelwi/systemd-fsck-wants-device
Draft

Change systemd fsck device dependencies to Wants#18791
Pawel Winogrodzki (PawelWMS) wants to merge 1 commit into
microsoft:3.0-devfrom
PawelWMS:pawelwi/systemd-fsck-wants-device

Conversation

@PawelWMS

Copy link
Copy Markdown
Contributor

Change

  • Replace BindsTo= with Wants= in the generated initrd systemd-fsck-root.service and the static systemd-fsck@.service template.
  • Preserve After= ordering, the generated systemd-fsck-usr.service binding, and the UUID-based source and dependencies of sysroot.mount.
  • Add no device locks.
  • Update systemd and systemd-boot-signed together to release 255-35.

Why

A transient filesystem probe failure can remove the root UUID alias and cause BindsTo= to stop a filesystem check, canceling dependent boot jobs. This dependency-only alternative lets the checker finish despite loss of the alias.

Related issue: systemd/systemd#43695

This is an alternative to #18653, not an additional patch to combine with it.

Risk

Wants= does not propagate device activation failure and does not automatically stop the checker when the device disappears. The static template change applies to all instances, including non-root filesystem checks.

This change does not recreate UUID links, retry failed mounts, or rebuild canceled boot transactions. sysroot.mount can still fail if its UUID path is absent when the mount runs. The draft remains experimental.

Verification

  • The native patch applies to pristine systemd v255 without fuzz.
  • Ten baseline VM boots reached switch-root with empty root-fsck BindsTo=, the expected UUID Wants=, unchanged root-mount dependencies, and verbose serial logging.
  • The ten-VM E4ds_v6/E8ds_v6 resize campaign was interrupted by a serial-log download error. It has not established whether this change survives the UUID-loss race; the controller error is not classified as a guest boot failure.
  • The experiment uses a generator-output wrapper and a static-unit override on stock binaries. This PR expresses the same dependency changes in the systemd sources; the rebuilt RPM has not yet been tested.
  • Local spec-guideline execution is blocked by Python/WSL tooling. Package CI results are pending.
  • Review strategy: self-review.

Avoid stopping root and template filesystem checks solely because a
filesystem UUID alias disappears during probing. Preserve device ordering,
root mount dependencies, and the generated usr checker binding.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bb0e6716-4886-4e95-9efe-71dcde8687d6
@microsoft-github-policy-service microsoft-github-policy-service Bot added Packaging 3.0-dev PRs Destined for AzureLinux 3.0 labels Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3.0-dev PRs Destined for AzureLinux 3.0 Packaging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant