Skip to content

chore(fire_vmm): bump vmlinux to release bab2b3a9#63

Merged
markovejnovic merged 2 commits into
mainfrom
chore/bump-vmlinux
Jul 8, 2026
Merged

chore(fire_vmm): bump vmlinux to release bab2b3a9#63
markovejnovic merged 2 commits into
mainfrom
chore/bump-vmlinux

Conversation

@markovejnovic

@markovejnovic markovejnovic commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Uprev pinned vmlinux release: 54d6c3f8bab2b3a9 (published 2026-07-08).
  • Upstream change: kernel configs trimmed (~480 options dropped per config) for faster Firecracker boot. Kernel versions unchanged (5.10.259 / 6.1.176); same five builds. New x86_64-6.1 image is 7 MB smaller (37.5 MB vs 44.5 MB).
  • priv/vmlinux/manifest.json vendored verbatim from the release; all five asset sha256s verified against the release .sha256 sidecar files.
  • Updated the pinned-URL test to the new release tag.

fix(fire_vmm): verify cached vmlinux hashes

Validating this bump exposed a cache-invalidation bug: Provider.install_state/2 counted an asset as installed if the file merely existed, so a manifest bump never invalidated the redist cache — provisioned hosts kept booting the previous release's kernels from the same asset paths, silently. A cached file now counts as installed only when its SHA-256 matches the manifest (stale files are re-fetched). Covered by new stale-hash install_state/2 tests.

Test plan

  • mix check gate green (format, compile --warnings-as-errors, credo --strict, 367/367 tests, dialyzer 0 errors)
  • Live E2E on a provisioned KVM host with the new kernel (cache wiped, fresh fd24f0ce… download): vm_lifecycle_test.exs passes — boot, exec over vsock, dm reclaim, usage flush, 32 s
  • CI integration job green on the rebased branch (first run pre-rebase hit the known exec-timeout runner flake; rebase onto c8333c7 + rerun is green)

@codecov

codecov Bot commented Jul 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Test Results

  4 files  ±0  190 suites  ±0   2m 13s ⏱️ - 2m 2s
541 tests +2  541 ✅ +2    0 💤 ±0  0 ❌ ±0 
926 runs  +4  541 ✅ +2  385 💤 +2  0 ❌ ±0 

Results for commit d6cd9fa. ± Comparison against base commit c8333c7.

This pull request removes 1 and adds 3 tests. Note that renamed tests count towards both.
Elixir.Hyper.Node.FireVMM.VmLinux.ProviderTest ‑ test install_state/2 is :ok when every asset file is present
Elixir.Hyper.Node.FireVMM.VmLinux.ProviderTest ‑ test install_state/2 is :bad_install when some present files have a stale hash
Elixir.Hyper.Node.FireVMM.VmLinux.ProviderTest ‑ test install_state/2 is :not_installed when every present file has a stale hash
Elixir.Hyper.Node.FireVMM.VmLinux.ProviderTest ‑ test install_state/2 is :ok when every asset file is present with its manifest hash

♻️ This comment has been updated with latest results.

Upstream trimmed kernel configs (~480 options dropped per config) for
faster Firecracker boot; kernel versions unchanged (5.10.259 / 6.1.176).
Manifest vendored verbatim from the release; asset sha256s verified
against the release sidecar files.
install_state/2 counted an asset as installed if the file existed, so a
manifest bump never invalidated the redist cache: nodes kept booting the
previous release's kernels from the same asset paths forever. A cached
file now counts as installed only when its SHA-256 matches the manifest;
stale files are re-fetched (all stale -> reinstall in place, partially
stale -> wipe and reinstall).

Found while validating this branch's vmlinux bump: a provisioned host
with the old release cached silently "passed" E2E on the old kernels.
@markovejnovic markovejnovic merged commit d57336c into main Jul 8, 2026
7 checks passed
@markovejnovic markovejnovic deleted the chore/bump-vmlinux branch July 8, 2026 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant