lima-vm/lima · critical
reading volume omap: %w
Error message
reading volume omap: %w
What it means
Once findVolume locates the volume superblock matching the requested role, it reads that volume's omap block (physical address from apfsOmapOIDOff) to obtain the omap B-tree root address. This error wraps the readBlock failure for that block. It indicates the volume superblock was found but its omap could not be read.
Source
Thrown at pkg/apfs/chown.go:278
if err != nil {
continue // skip volumes we can't resolve
}
volBlock, err := c.readBlock(volPhysAddr)
if err != nil {
continue
}
if verifyChecksum(volBlock) != nil {
continue
}
if le.Uint32(volBlock[apfsMagicOff:]) != apfsMagic {
continue
}
volRole := le.Uint16(volBlock[apfsRoleOff:])
if volRole == role {
omapAddr := le.Uint64(volBlock[apfsOmapOIDOff:])
omapBlock, err := c.readBlock(omapAddr)
if err != nil {
return nil, fmt.Errorf("reading volume omap: %w", err)
}
return &volumeInfo{
omapTreeAddr: le.Uint64(omapBlock[omapTreeOIDOff:]),
rootTreeOID: le.Uint64(volBlock[apfsRootTreeOIDOff:]),
latestXID: le.Uint64(volBlock[objXIDOff:]),
}, nil
}
}
return nil, fmt.Errorf("no volume with role %#x found", role)
}
// omapLookup searches the omap B-tree for a virtual OID, returning
// the physical address from the entry with the highest xid <= maxXID.
func (c *container) omapLookup(omapTreeAddr, oid, maxXID uint64) (uint64, error) {
blk, err := c.readBlock(omapTreeAddr)
if err != nil {
return 0, err
}View on GitHub (pinned to dd909d0973)
Solutions
- Check the image is complete (size matches the source disk capacity).
- Try a different volumeRole if the wrong volume was targeted and its storage was trimmed.
- Run fsck_apfs against the image from a macOS host to repair volume metadata.
- Re-take the disk image from a cleanly shut-down VM.
- Restore the image from backup if corruption is confirmed.
Defensive patterns
Strategy: try-catch
Try / catch
if err := apfs.Chown(diskPath, role, uid, gid, paths...); err != nil {
if strings.Contains(err.Error(), "reading volume omap") {
log.Warn("target volume omap unreadable; image may be truncated or volume removed")
return err
}
return err
} Prevention
- Take images from cleanly shut-down VMs.
- Do not delete or wipe the target volume before running Chown.
- Verify the image file is complete (size and checksum).
- Repair with fsck_apfs before programmatic edits.
When it happens
Trigger: The volume's omap physical address is out of range for the image file, the image is truncated, or an I/O error (bad sector, permission) occurs while reading that specific block.
Common situations: Incomplete disk image copies, corrupted volumes inside an otherwise readable container, or images where the target volume was deleted and its omap blocks were reused/trimmed.
Related errors
- read block 0: %w
- reading container superblock: %w
- resolving filesystem root tree OID %d: %w
- resolving path %#q: %w
- chown inode %d (%#q): %w
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/10933319185504eb.
Report an issue: GitHub.