abiosoft/colima · error
default storage pool recovery failure
Error message
default storage pool recovery failure
What it means
Post-recovery verification: colima lists storage pools filtered by name and compares the output to the expected pool name; a mismatch means 'incus admin recover' reported success but the default pool is still absent from incus's database. Recovery is treated as failed even though no low-level command errored.
Source
Thrown at environment/container/incus/incus.go:472
log.Println("Running 'incus admin recover' ...")
log.Println()
log.Println(fmt.Sprintf("Found %d storage pool source(s):", len(disks)))
for _, disk := range disks {
log.Println(" " + poolDisksDir + "/" + disk)
}
log.Println()
if err := c.guest.RunInteractive("sudo", "incus", "admin", "recover"); err != nil {
return fmt.Errorf("error recovering storage pool: %w", err)
}
out, err := c.guest.RunOutput("sudo", "incus", "storage", "list", "name="+poolName, "-c", "n", "--format", "compact,noheader")
if err != nil {
return err
}
if out != poolName {
return fmt.Errorf("default storage pool recovery failure")
}
return nil
}
func (c *incusRuntime) wipeDisk(size int) error {
// prepare by deleting relevant files/directories
deleteScript := strings.NewReplacer(
"{disk_file}", poolDiskFile,
"{meta_dir}", poolMetaDir,
).Replace("sudo rm -rf {disk_file} {meta_dir}")
if err := c.guest.RunQuiet("sh", "-c", deleteScript); err != nil {
return fmt.Errorf("error preparing storage pools directory: %w", err)
}
// create new storage pool
var diskSize = fmt.Sprintf("%dGiB", size)View on GitHub (pinned to c3a5f9184d)
Solutions
- Check actual pools: 'colima ssh -- sudo incus storage list'
- If the pool exists under a different name, decide to keep or delete it, then retry start
- Discard and recreate: answer 'no' at the retry prompt so colima wipes the disk
- Report version-specific formatting differences to colima if pool exists yet detection fails
Defensive patterns
Strategy: validation
Validate before calling
// compare normalized output to survive formatting drift
out, err := c.guest.RunOutput("sudo", "incus", "storage", "list", "name="+poolName, "-c", "n", "--format", "compact,noheader")
if err != nil {
return err
}
if strings.TrimSpace(out) != poolName {
return fmt.Errorf("default storage pool recovery failure")
} Try / catch
out, err := c.guest.RunOutput("sudo", "incus", "storage", "list", ...)
if err != nil {
return err
}
if strings.TrimSpace(out) != poolName {
// verify with an unfiltered listing before declaring failure
full, _ := c.guest.RunOutput("sudo", "incus", "storage", "list", "--format", "json")
return fmt.Errorf("default storage pool recovery failure (pools now: %s)", full)
} Prevention
- Pin guest incus version to the one colima was tested with
- After recovery, manually verify with 'incus storage list' before relying on the pool
- Report format drift (extra columns/whitespace) upstream quickly — it breaks detection
When it happens
Trigger: Output of 'incus storage list name=<pool> -c n --format compact,noheader' != poolName: pool created under a different name, output formatting changed (extra whitespace/headers) across incus versions, or recovery silently skipped the pool.
Common situations: Guest incus version formats 'compact,noheader' differently than colima expects, pool recovered under a renamed entry, partially migrated old disk layout.
Related errors
- cannot recover disk: %w, creating new storage pool
- cannot list storage pool disks: %w
- no existing storage pool disks found
- error recovering storage pool: %w
- error preparing storage pools directory: %w
AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15).
Data as JSON: /api/errors/f1bf6ef76b8b07db.
Report an issue: GitHub.