Skip to main content
April 2026

0.35.0

New features

Btrfs subvolumes for var partitions

Runtime var partitions can now declare btrfs subvolumes with per-path options for compression, quotas, NOCOW, and read-only state. Subvolumes may be declared at the extension level (where they travel with the extension) or at the runtime level (where they override extension-declared values).

extensions:
  my-ext:
    subvolumes:
      lib/docker:
        nodatacow: true
        quota: '10G'
      lib/myapp/cache: true

runtimes:
  dev:
    extensions: [my-ext]
    var:
      compression: 'zstd:3' # partition-wide default
      subvolumes:
        lib/docker:
          writable: false # override: make it read-only
        lib/avocado: true # built-in, declared here to suppress warnings

Subvolume config participates in the rebuild input hash, so adding, removing, or changing a subvolume triggers a proper rebuild of the var image. Short forms (true, false, "ro") are supported alongside the full object form, and conflict detection emits warnings for exact-path collisions between extensions and for nested subvolume paths that would leak quota isolation.

See Var partition configuration for the full option reference.

avocado connect clean

Removes Connect configuration from a project: strips the connect: section and avocado-ext-connect-config extension from avocado.yaml, and deletes the overlay/etc/avocado-conn/ directory. Useful when disconnecting a project from the Connect platform or resetting state for a fresh avocado connect init.

avocado connect clean           # clean dev runtime (default)
avocado connect clean -r prod   # clean a specific runtime

SDK version locking per host architecture

SDK package lock files now store full NEVRA versions per host architecture instead of stripping the .ARCH suffix. This gives exact package pinning per host arch and removes a reproducibility gap where x86-64 and aarch64 hosts could resolve to slightly different SDK packages from the same lock file.


Bug fixes

  • Subvolumes are now created as read-write at mkfs.btrfs time and flipped to read-only after properties are applied via loop mount, since btrfs property set rejects read-only subvolumes.
  • Compression is skipped on nodatacow subvolumes — NOCOW and transparent compression are mutually exclusive on btrfs (COW is required for compression).
  • Replaced the unsupported mkfs.btrfs --inode-flags flag with --compress at image creation time plus post-creation loop mount (chattr +C for NOCOW, btrfs property set for per-subvolume compression and quotas).

Other

  • avocado init --reference now resolves references against the standalone avocado-linux/references repository instead of avocado-linux/avocado-os/references/.
  • Per-property echo output during subvolume post-creation setup makes the build log transparent about which properties (nodatacow, compression, quota, read-only) are being applied to which path.