Conversation
There was a problem hiding this comment.
Code Review
This pull request effectively addresses the issue of bootupctl update failing in environments without block-backed root filesystems, such as ephemeral VMs using virtiofs. The core change to make get_devices() return an Option is well-implemented and propagated correctly to the callers, allowing them to gracefully skip the update. The addition of ci/ephemeral-test.sh is a great way to ensure this new behavior is tested. I have one main concern about the completeness of the fix regarding other components, which I've detailed in a specific comment.
|
Added one more check |
32258d5 to
218236d
Compare
|
This won't work on Live systems. Here is my branch with fix, mind checking it? Logs from live-iso: Logs from qemu: |
3df3e2a to
cdc2944
Compare
In environments without block-backed boot filesystems (virtiofs in bcvk ephemeral, NFS root, ISO boot, etc.) there is no on-disk bootloader to manage. Previously the update path would fail because list_dev_current_root() bailed when it could not find a block device from /boot or /sysroot. Assisted-by: OpenCode (Claude Opus 4) Signed-off-by: Colin Walters <walters@verbum.org>
On Fedora 43 dnf is dnf5, and the copr subcommand is provided by the dnf5-plugins package rather than dnf-plugins-core. Without it the ephemeral CI job fails with: Unknown argument "copr" for command "dnf5". Install dnf5-plugins with a fallback (|| true) so it's a no-op on CentOS Stream 9 where that package doesn't exist. Assisted-by: OpenCode (Claude Sonnet 4.5) Signed-off-by: Colin Walters <walters@verbum.org>
cdc2944 to
97e50d6
Compare
|
PR needs rebase. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
The amd64 boot test fails on every run because bootloader-update.service ends up failed, leaving the system "degraded". Under `bcvk ephemeral` the root filesystem is virtiofs with no backing block device, so `bootupctl update` errors out with "Failed to find block device from /boot or /sysroot". That's an environment artifact of the test, not a problem with the rechunked image. With the manifest now gated on every arch building, this failure would also block publishing the amd64 images entirely, so carry the mask here rather than depending on a separate fix landing first. coreos/bootupd#1072 makes bootupd skip the update in this case; until that ships in all the base images, mask the unit on the kernel command line, the same way bcvk itself masks systemd-journal-flush.service. Every other unit is still checked. Assisted-by: AI
The amd64 boot test fails on every run because bootloader-update.service ends up failed, leaving the system "degraded". Under `bcvk ephemeral` the root filesystem is virtiofs with no backing block device, so `bootupctl update` errors out with "Failed to find block device from /boot or /sysroot". That's an environment artifact of the test, not a problem with the rechunked image. So far that only makes the job red, but once the manifest is gated on every arch building, it would block publishing the amd64 images entirely. Carry the mask here rather than depending on a separate fix landing first. coreos/bootupd#1072 will make bootupd skip the update in this case; until that ships in all the base images, mask the unit on the kernel command line, the same way bcvk itself masks systemd-journal-flush.service. Every other unit is still checked. Prep for gating the manifest on every arch building. Generated-by: AI
|
@cgwalters-bot take this rebase |
|
Rebased onto current main: cgwalters-forge/bootupd:bot/1072-rebase at b017de2. Conflicts, in
Your remaining commit's code is unchanged; only diff context moved. Tested on a devspace: To take it: Generated-by: https://github.com/cgwalters/#llms |
|
It's fine you can push a new PR closing this one |
Pull request was closed
bootupd's bootloader-update.service looks for the block device backing /boot or /sysroot, and in an ephemeral VM the root is virtiofs, so it fails with "Failed to find block device from /boot or /sysroot". The system then comes up "degraded", which breaks every test that boots an image with bcvk and checks systemctl is-system-running, forcing each consumer (e.g. bootc-dev/infra, bootupd CI) to mask it themselves. There is never a bootloader to update in an ephemeral VM, so mask it by default like systemd-journal-flush.service. coreos/bootupd#1072 makes bootupd skip this case itself, but existing images will carry older bootupd for a long time. The ephemeral system-command integration test now asserts the VM reaches "running", so a unit failing in every ephemeral boot is caught here rather than by bcvk's consumers. Generated-by: AI Signed-off-by: Colin Walters <walters@verbum.org>
bootupd's bootloader-update.service looks for the block device backing /boot or /sysroot, and in an ephemeral VM the root is virtiofs, so it fails with "Failed to find block device from /boot or /sysroot". The system then comes up "degraded", which breaks every test that boots an image with bcvk and checks systemctl is-system-running, forcing each consumer (e.g. bootc-dev/infra, bootupd CI) to mask it themselves. There is never a bootloader to update in an ephemeral VM, so mask it by default like systemd-journal-flush.service. coreos/bootupd#1072 makes bootupd skip this case itself, but existing images will carry older bootupd for a long time. The ephemeral system-command integration test now asserts the VM reaches "running", so a unit failing in every ephemeral boot is caught here rather than by bcvk's consumers. Generated-by: AI Signed-off-by: Colin Walters <walters@verbum.org>
Fix the problem that
bcvk ephemeral run quay.io/fedora/fedora-bootc:43shows a systemd error by default.