Weekly status #346

Weekly status for the week of 29th April to 19th May.


In the past few weeks the LXD team was in Madrid for the Product and Engineering sprints. This involved planning for the next 6 month development cycle. Therefore, it was a rather quiet period from a development perspective. However, some important changes have landed into LXD.

Automatic allocation of external addresses for OVN load balancers and forwards

When creating a load-balancer or network forward in an OVN network, previously the listen address had to be specified manually from the pool of available addresses defined by the uplink network. However, uplink networks are always created in the default project, whereas OVN networks can be defined in projects with features.networks enabled, such that the network exists only for that specific project. This means users who don’t have access to the default project, but do have access to the project where the OVN network was defined are prevented from seeing the external addresses that are available or in use when considering which listen address to specify for their network forward or load-balancer.

It was also inconvenient to have to figure out an available listen address when you were not concerned about having a specific one.

To address these shortcomings it is now possible to use --allocate=ipv{4,6} flag when creating a network load-balancer or forward. This instructs LXD to select an address from the available pool of addresses defined on the associated uplink network.

Documentation: How to configure network forwards and How to configure network load balancers

Allow specific USB ports to be passed through to VMs (from Incus)

New selector config keys serial, busnum and devnum have been introduced for device type usb. This makes it possible to distinguish between USB devices with identical vendorid and productid.

Documentation: USB Device

PyLXD 2.3.3 client SDK release

Bug fixes

  • Fixed issue when calling lxc storage volume attach <pool> <volume_name> <instance_name> [device_name] [device_path] where the block volume device could not be given a custom name when attaching it to the virtual machine. We now consider the third argument (either [device_name] or [device_path]) to be a device_path only if the volume content type is filesystem , else this is considered a device name.
  • Fixed a locking issue in the LXD daemon where occasionally a mutex could be unintentionally unlocked a second time, causing a panic.
  • Fixed source.wipe in the LVM storage driver, as it was given the wrong parameter (logical volume name instead of the device path).
  • Fixed issue in the BTRFS storage driver, it would incorrectly create a default loop device instead of using source when source is an empty raw block device or MBR/GPT.

All changes

The items listed below is all of the work which happened over the past week and which will be included in the next release.


LXD Charm

  • Nothing to report this week

Distribution work

This section is used to track the work done in downstream Linux distributions to ship the latest LXD as well as work to get various software to work properly inside containers.


  • Nothing to report this week.

LXD snap

  • Fixed issue in the BTRFS storage driver, it would incorrectly create a default loop device instead of using source when source is an empty raw block device or MBR/GPT.

When will there be a stable release with this fix? Or is there a workaround for 5.21.1? Thanks

This will be included in release 6.1 and we will then backport it into 5.21.