From d84a702d33887447b4116aed408479b2ec39bce5 Mon Sep 17 00:00:00 2001 From: rldyourmnd Date: Tue, 1 Sep 2026 05:12:08 +0500 Subject: [PATCH] fix(incus): image volumes take a managed 16 GiB, not the LVM default Instance roots carry per-profile sizes, image volumes take the pool default, and the unmanaged LVM default of 10 GiB held only until the CodeQL bundle grew the unpacked rootfs to ~12 GiB. Two b21 attempts died at 'No space left on device' inside the image volume while every visible budget -- builder disk, thin pool, host disk -- had room. The value is now rendered into the storage plan so reconcile-incus owns it and the next size change is a reviewed line, not an incident. Claude-Session: https://claude.ai/code/session_01LsGid6U5RrQdFvJmvYdGCF --- internal/incusplan/plan.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/incusplan/plan.go b/internal/incusplan/plan.go index a465913a..9f90ca94 100644 --- a/internal/incusplan/plan.go +++ b/internal/incusplan/plan.go @@ -165,6 +165,13 @@ func Build(cfg config.Config, selectedPools []string) (Plan, error) { "lvm.thinpool_name": "gha-thin", "lvm.use_thinpool": "true", "size": strconv.Itoa(cfg.Incus.StorageSizeGiB) + "GiB", + // Image volumes take the pool default because only instance + // roots carry a per-profile size. The LVM default of 10 GiB + // held until the CodeQL bundle joined the tool cache; the + // unpacked b21 rootfs is ~12 GiB and the unpack fails inside + // the image volume, not the builder, which is exactly where + // two builds died before this became a managed value. + "volume.size": "16GiB", }, }, Network: Network{