Introduction
The LXD team would like to announce the release of LXD 5.0.4!
Thank you to everyone who contributed to this release!
This is the fourth bugfix release for LXD 5.0, which is supported until June 2027.
Bugfixes and improvements
This release includes 10 months of bugfixes and minor improvements from the development branch. There have been a lot of storage-related fixes and improvements in this release.
Some of the highlights include:
Support running VMs on hosts with >64 CPUs
An issue that prevented starting VMs on hosts that had >64 CPUs has now been fixed.
There remains a limit to the number of vCPUs that can be passed into a VM guest, which is currently at 256. But VMs can be started on hosts with >256 CPUs.
Optimized block volume refresh for Ceph RBD
Previously when transferring a block volume to another pool or host, the initial transfer was done using the efficient rbd export-diff
tool, but subsequent refreshes were performed using a full block copy of all changed snapshots and the main volume itself. This was slow and inefficient.
Now a new migration extension called RBD_AND_RSYNC
has been added, which allows for compatible LXD servers to use rbd export-diff
for efficiently transferring only the differences between the latest common snapshot and the remaining snapshots and main volume.
Transfers between older versions of LXD will fallback to using full block copy and rsync (BLOCK_AND_RSYNC
).
Support for Ubuntu Oracular containers on cgroupv2 hosts
Due to the newly vendored AppArmor version bundled in the snap package plus changes to the AppArmor profile LXD generates, it is now possible to run Ubuntu Oracular containers on compatible hosts (those with cgroupv2 support). This change was required because Oracular comes with systemd v256, which drops support for cgroupv1 and places additional requirements on what needs to be mounted inside a container.
Support for new images:
server
Added support for the new images:
server to the lxc
CLI tool.
Fix for snap packageās shmounts helper
A fix to make sure to terminate the forked off mount namespace capture helper. Otherwise,
the child will continue execution of the remaining setup code and thus cause a race with the parent, which occasionally manifests itself with the /var/snap/lxd/common/shmounts
being missing from the parentās mount namespace after it has switched back to the mount ns of PID 1.
Snap packaging dependency updates
- AppArmor userspace updated to
v4.0.2
to support running systemd v256 (Ubuntu Oracular) containers on compatible hosts (cgroupv2 enabled). - Dqlite updated to
v1.16.5
. Includes built-in raft. - Go updated to
1.23
. - ZFS updated to
zfs-2.2.6
andzfs-2.1.15
. - Virtiofsd updated to
v1.11.1
. - squashfs-tools-ng updated to
v1.3.1
. - sqlite updated to
version-3.46.1
. - swtpm updated to
v0.9.0
. - ovn updated to
v24.03.2
. - ovs updated to
v3.3.0
. - libnvidia-container updated to
v1.16.1
. - nftables updated to
v1.1.0
. - libnftnl updated to
libnftnl-1.2.7
. - libusb updated to
v1.0.27
.
Complete changelog
Here is a complete list of all changes in this release:
Full commit list
- build(deps): bump github.com/osrg/gobgp/v3 from 3.22.0 to 3.23.0
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.20 to 1.14.22
- shared/simplestreams/products: Fix regression in parsing version files
- shared/simplestreams/simplestreams: Improve error messages
- github: drop DCO check now that we have the DCO app enabled
- shared/simplestreams/products: Search only for lxd archives
- build(deps): bump golang.org/x/term from 0.16.0 to 0.17.0
- build(deps): bump golang.org/x/crypto from 0.18.0 to 0.19.0
- build(deps): bump golang.org/x/oauth2 from 0.16.0 to 0.17.0
- github: run system-tests with LXD built with Go 1.21
- github: run some system-tests with LXD built with Go 1.19
- github: use matrix.go in Install Go section names
- github: check compat with min Go version when compiling with 1.19.x
- github: run code tests using Go 1.21.x
- github: stop purging core20
- github: purge disabled/superseded snaps
- github: build all client binaries with Go 1.21
- github: build doc with Go 1.21
- github: build lxd-snapcraft with Go 1.21
- github: hardcode Go version used with code-tests/documentation
- github: move snap removal to āReclaim some spaceā step
- github: put docker removal its own step
- github: mask lxc{,-net}.service in a singe command
- go.mod: pin minio-go to v7.0.66 (`minio/minio-go/v7@v7.0.67/utils.go:627:67: undefined: tls.CertificateVerificationError` with Go 1.19. Ā· Issue #1931 Ā· minio/minio-go Ā· GitHub)
- gomod: Update dependencies
- lxd/storage/drivers/ceph: Restore the filesystems UUID on the volume
- test/suites/storage: Add check for UUID generation on restore
- lxd/storage/drivers/ceph: Restore the VM block filesystem volume too
- lxd/storage/drivers/lvm: Restore the VM block filesystem volume for thin-pools too
- lxd/storage/drivers/ceph: Double check the volumes content type
- lxd/rsync: Merge sendSetup and Send functions
- lxd/rsync: Add description of cleanup function to RunWrappers
- lxd/storage/drivers: Always use default block.filesysem for VM volumes
- shared/subprocess: Improve error handling
- incusd/instance/qemu: Improve error handling
- build(deps): bump github.com/canonical/candid from 1.12.2 to 1.12.3
- lxd/instance/drivers/driver/qemu: Donāt leak file descriptor when probing for Direct I/O support
- build(deps): bump golang.org/x/crypto from 0.19.0 to 0.20.0
- build(deps): bump github.com/osrg/gobgp/v3 from 3.23.0 to 3.24.0
- build(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0
- build(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0
- build(deps): bump golang.org/x/oauth2 from 0.17.0 to 0.18.0
- github: fix branch target name/version extraction logic
- lxd/network/acl: Change protocol field for ovn logs
- lxd/instance: Reject limits.kernel config for VMs
- doc:
limits.kernel
only applies to containers (see #12874) - lxd/storage: Fix resize for pools with custom zfs.pool_name
- build(deps): bump github.com/mdlayher/ndp from 1.0.1 to 1.1.0
- lxd/instance/drivers/qemu: make it clear that CCW devices (s390x) donāt have device bus nor bus address
- lxd/storage/drivers/driver_zfs_utils: fix typos
- lxd/storage/drivers/driver_zfs_utils: make it explicit that blocksize is in bytes
- doc: fix typo in CONTRIBUTING.md
- doc/instances: correct the image server name in the example intro
- lxd/instance/drivers/qemu: donāt try to enable the lxd-agent.service
- lxd/apparmor/instance_qemu: only allow QEMU system emulator
- lxd/apparmor/instance_qemu: remove partial duplication of unix rule
- lxd/task/group: Make cancel type of context.CancelFunc for clarity
- lxd/task/group: Remove unnecessary use of defer unlock calls in Add
- lxd/task/group: Remove unnecessary use of defer unlock calls in Start
- lxd/task/group: Remove unnecessary use of defer unlock calls in Stop
- lxd/task/group: Adds NewGroup function
- lxd/task: NewGroup usage
- lxd/daemon: Initialise task group using NewGroup
- lxd/task/group: Remove unnecessary running nil check
- doc: Add paragraph on how to delete images
- test: Add exec exit code test
- lxd/sys: handle apparmor unconfined profile mode appropriately
- lxd/apparmor: allow confined services to receive required signals
- lxd/sys: add comment clarifying AppArmor unconfined profile mode
- lxd/rsync: Consistently compare files on nanosecond basis
- test/suites/migration: Check for file contents after refresh
- test/suites/migration: Check local and remote instance refreshes based on nanoseconds
- shared/idmap: handle ābothā idmappings in raw.idmap properly
- test/suites/idmap: test ālxc file pushā and raw.idmap config combo
- Add information about the client SDKs to the README.md file
- lxd/response: Watch for liveness of the TCP connection for single file response
- lxd/instance_post: Update comments in instancePostClusteringMigrate function
- lxd/instance_post: Rename container to instance in instancePost function
- lxd/instance_post: Prevent live migration of instances with custom volumes
- idmap: Move from shared to lxd directory
- fuidshift: Update usage of idmap package
- lxd: Update usage of idmap package
- shared: Update usage of idmap package
- subprocess: Moves from shared into lxd directory
- lxd: Update usage of subprocess package
- instancewriter: Moves from shared to lxd directory
- lxd: Updates usage of instancewriter package
- instance.go: Moves from shared to instancetype directory
- lxc: Updates instancetype usage
- lxd: Updates instancetype usage
- linux: Moves from shared to lxd directory
- lxc-to-lxd: Update usage of linux package
- lxd: Updates usage of linux package
- lxd-migrate: Update usage of linux package
- revert: Moved from lxd to shared directory
- lxd: Update usage of revert package
- Makefile: Donāt use verbose go install call for non-lxd deps
- doc: add paragraph on how to delete images
- lxd/storage_volume_snapshots: Use the
snapshots.pattern
option for manual snapshots - tests: Test that manual snapshots of custom storage volumes use the
snapshots.pattern
option - doc/api-extensions:
security.devlxd
applies to both containers and VMs - api: Add server instance type info api extension
- shared/api/server: Add supported instance types in ServerEnvironment
- lxd/api_1.0: Indicate supported instance types on server
- doc/rest-api: Update api definition
- tests: Add server info instance type test
- lxd-benchmark: Use image from ubuntu remote in description
- shared/api/image: Use ubuntu cloud url for remote example
- shared/api/instance: Use ubuntu cloud url for remote example
- shared/util_test.go: Update test data with ubuntu cloud url
- doc: Regenerate rest-api.yaml
- README: add sections on recommended tools to manage LXD at scale
- doc: enable multiprocessing for pyspelling
- Makefile: have run-parts report which script it runs
- doc: use all processors for spelling check
- client/lxd_certificates: Replace HasExtension with CheckExtension
- client/lxd_cluster: Replace HasExtension with CheckExtension
- client/lxd_containers: Replace HasExtension with CheckExtension
- client/lxd_images: Replace HasExtension with CheckExtension
- client/lxd_instances: Replace HasExtension with CheckExtension
- client/lxd_instances: Fix typo in api extension check error message
- client/lxd_network_acls: Replace HasExtension with CheckExtension
- client/lxd_network_forwards: Replace HasExtension with CheckExtension
- client/lxd_network_peer: Replace HasExtension with CheckExtension
- client/lxd_network_zones: Replace HasExtension with CheckExtension
- client/lxd_networks: Replace HasExtension with CheckExtension
- client/lxd_projects: Replace HasExtension with CheckExtension
- client/lxd_server: Replace HasExtension with CheckExtension
- client/lxd_storage_buckets: Replace HasExtension with CheckExtension
- client/lxd_storage_pools: Replace HasExtension with CheckExtension
- client/lxd_storage_volumes: Replace HasExtension with CheckExtension
- client/lxd_warnings: Replace HasExtension with CheckExtension
- shared: Add helper for obtaining a CertInfo struct
- lxd/endpoints: Return a copy of the network cert
- lxc/cluster: update restore help text for --force
- doc: speed up processing
- github: consistently use set -eux in all script snippets
- test/lint: Temporarily remove golangci
- doc: Bring spell check into sync
- i18n: Update translations
- api: Add api extension server_version_lts
- shared/version: Add boolean indicating whether this is an LTS release
- shared/api/server: Add server lts indication in ServerEnvironment
- lxd/api_1.0: Indicate lts version on server
- doc: Update rest definition
- lxd/storage_volumes: Properly target refreshes
- lxd/storage_volumes: Use a single POST handler
- golangci: Remove/update some overly-pedantic revive lint rules.
- README: point to lxd-pkg-snap repo
- doc/installing.md: update link to snapd install doc
- lxd/storage/drivers/ceph: Disable filesystem config keys on block volumes
- lxd/storage/drivers/lvm: Disable filesystem config keys on block volumes
- test: Add check to restore custom volumes of type block
- lxd/storage/drivers/ceph: Update UnmountVolumeSnapshot docstring
- github: workaround microceph busy disk issue by freeing the ephemeral disk early
- lxd: Improve error check for existing certificates
- lxd/cluster: Revert database setup if cluster join fails
- lxd/cluster: Fix linter errors
- lint: Exclude ādeep-exitā linter rule for cluster node removal
- shared/api: Updates swagger description for certificate field.
- shared/api: Fix lint errors (receiver-naming).
- doc: Updates OpenAPI spec.
- doc/requirements: mention that SKBPRIO/QFQ qdiscs require 5.17+
- doc: add QFQ, qdisc, qdiscs and SKBPRIO to wordlist
- doc: alpha sort the wordlist
- lxd: Fix lint error (revive: confusing-results).
- lxd: Fix lint errors (var-naming).
- lxd: Fix lint errors (revive: unchecked-type-assertion).
- lxd/db/cluster: Fix lint error (revive: var-naming).
- lxd/patches: Add patch to remove block.* settings from type block volumes
- lxd/patches: Satisfy the linter
- lxc/config: Fix lint error (revive: confusing-results).
- lxd-migrate: Fix lint error (revive: receiver-naming).
- lxd-migrate: Fix lint error (revive: exported).
- lxd-migrate: Ignore lint error (revive: deep-exit).
- lxc/remote: Fix lint errors (revive: exported).
- lxd/instance/drivers/qemu: fix linting issues
- lxd/instance/drivers/lxc: fix linting issues
- lxd: Fix lint errors (var-naming).
- lxd/cluster: Fix lint error (var-declaration).
- lxd/cluster: Refactor leader address logic (revive: defer).
- lxd/cluster: Fix lint error (reduntant-import-alias).
- lxd/cluster: Fix lint error (exported).
- test/suites: Ensure we can still list storage pools when restricted.
- test/suites: Ensure restricted certs cannot view storage pool config.
- lxd/device/disk: Satisfy the linter
- lxd/storage/backend_lxd: Satisfy the linter
- lxd/storage/drivers/generic_vfs: Satisfy the linter
- lxd/endpoints: Hide read errors from proxies
- incusd/instance/qemu: Cap hotplug CPU slots to 64
- incusd/instance/qemu: Fix handling of > 64 limits.cpu
- lxd/instance/drivers/qemu: do not check for
size.state
if shared storage is enabled for an instance - github: ask bug reporters to provide the list of relevant snaps
- lxd/storage/drivers/generic_vfs: Return if the right file was found
- Fix linter errors (revive: exported).
- lxd/cluster: Fix lint error (revive: early-return).
- lxd: Fix lint errors (revive: exported).
- lxd: Ignore lint error (revive: defer).
- lxd/storage/drivers: Add VolumeCopy struct
- lxd/device: Fix lint error (revive: exported).
- lxd/device: Fix lint errors (revive: useless-break).
- lxd/instance/drivers: Fix lint errors (revive: confusing-results).
- lxd/network: Fix lint errors (revive: exported).
- lxd/network: Fix lint errors (revive: comment-spacings).
- lxd/project: Fix lint errors (revive: confusing-results).
- lxd: Fix lint error (revive: unchecked-type-assertion).
- lxd/storage/drivers/interface: Change function signatures
- lxd/storage/drivers/generic_vfs: Use updated snapshots slice
- client: Remove
WithUnsecure
from cookie handler options. - lxd/storage/drivers/generic_vfs: Use VolumeCopy struct
- lxd/storage/drivers/btrfs: Use updated driver interface
- lxd/storage/drivers/ceph: Use updated driver interface
- lxd/storage/drivers/cephfs: Use updated driver interface
- lxd/storage/drivers/dir: Use updated driver interface
- lxd/storage/drivers/lvm: Use updated driver interface
- lxd/storage/drivers/zfs: Use updated driver interface
- lxd/storage/drivers/common: Use updated driver interface
- lxd/storage/drivers/mock: Use updated driver interface
- github: build lxc and lxd-migrate binaries with trimpath
- github: strip lxc and lxd-migrate native binaries
- lxd/storage/backend_lxd: Update storage driver invocations
- lxd/storage/backend_lxd: Donāt validate custom storage volumes twice
- github: build lxc and lxd-migrate binaries with trimpath
- doc: build lxc with trimpath and without debug info
- github: use regex matching to purge disabled snaps
- lxd/instance/drivers/qemu: Handle SELinux for LXD agent
- lxd/storage/backend_lxd: Donāt use storage name when creating source snapshots
- github: add labels when PRs target LTS branches
- lxd/storage/backend_lxd: Append the snapshots creation date
- lxd/migrate_storage_volumes: Send snapshot creation timestamp
- lxd-generate: Return helpful error instead of panicking.
- lxd/storage/backend_lxd: Block volumeās volatile.uuid from modification
- lxd/storage/backend_lxd: Use quotes consistently for error messages
- lxd/storage/drivers/volume: Set the snapshots parent in NewVolumeCopy
- lxd/storage/drivers/generic_vfs: Handle volatile.uuid for volume imports
- lxd/storage/drivers/generic_vfs: Handle volatile.uuid for volume exports
- lxd/storage/drivers/generic_vfs: Handle volatile.uuid for volume migration
- test: Pass the storage pool name into the snapshots suite
- lxd/storage/drivers/zfs: Pass snapshots when copying
- lxd/storage/drivers/ceph: Pass snapshots when copying
- lxd/project: Donāt panic on StorageVolumeParts
- lxd/storage/drivers/generic_vfs: Use VolumeCopy for genericVFSCopyVolume
- lxd/storage/drivers/btrfs: Pass the CopyVolume struct to genericVFSCopyVolume
- lxd/storage/drivers/ceph: Pass the CopyVolume struct to genericVFSCopyVolume
- lxd/storage/drivers/dir: Pass the CopyVolume struct to genericVFSCopyVolume
- lxd/storage/drivers/lvm: Pass the CopyVolume struct to genericVFSCopyVolume
- lxd/storage/drivers/zfs: Pass the CopyVolume struct to genericVFSCopyVolume
- lxd/storage/drivers/interface: Add HasVolumeSnapshots function
- lxd/storage/drivers/common: Implement HasVolumeSnapshots
- lxd/storage/drivers: Replace vol.SnapshotsMatch with driver.HasVolumeSnapshots
- lxd/storage/drivers/volume: Remove SnapshotsMatch
- github: donāt abort on remount failures
- lxd/storage/pool_interface: Remove deleteMissing from CheckInstanceBackupFileSnapshots
- lxd/api_internal: Remove deleteMissing from CheckInstanceBackupFileSnapshots
- lxd/storage/backend_mock: Remove deleteMissing from CheckInstanceBackupFileSnapshots
- lxd/storage/backend_lxd: Move the snapshot comparison logic into the storage driver
- lxd/storage/backend_lxd: Remove deleteMissing from CheckInstanceBackupFileSnapshots
- incusd: Correctly update event location
- incusd/events: Upgrade to websocket as late as possible
- internal/server/db: Remove function
doDbScan
- internal/server: Use
Retry
function - internal/server/db: Unwrap dbQueryRowScan function
- internal/server/db: Unwrap queryScan function
- internal/server/db: Remove exec function
- lxd/dns: Serialize DNS queries
- lxd/backups: Simplify missing backup errors
- tests: Update for current backup errors
- lxd/cluster: Optimize ConnectIfInstanceIsRemote
- lxd/backup/utils: Ensure the volumeās config gets updated too
- lxd/storage/backend_lxd: Block volumeās volatile.uuid from modification
- lxd/storage/backend_lxd: Set volumeās volatile.uuid for storage driver calls
- lxd/storage/backend_lxd: Consistently use GetNewVolume for config generation
- lxd/storage/drivers/volume: Deep copy the volumeās config when instantiating a snapshot
- lxd/resources/storage: Add GetDisksByID function
- lxd/instance/qemu: No
size.state
checks at startup needed - lxd/request: Add a generic methods for getting and setting context values.
- lxd/request: Adds an effective project name context key.
- test/suites: Ensure restricted clients can list inherited resources.
- lxd/instance/drivers/qemu: Revert linter fix
- lxd/storage/backend_lxd: Donāt instantiate a new volume if existent during migration
- lxd/storage/drivers/generic: Use VolumeCopy for genericVFSMigrateVolume
- lxd/storage/drivers/zfs: Pass VolumeCopy for genericVFSMigrateVolume
- lxd/storage/drivers/lvm: Pass VolumeCopy for genericVFSMigrateVolume
- lxd/storage/drivers/dir: Pass VolumeCopy for genericVFSMigrateVolume
- lxd/storage/drivers/cephfs: Pass VolumeCopy for genericVFSMigrateVolume
- lxd/storage/drivers/ceph: Pass VolumeCopy for genericVFSMigrateVolume
- lxd/storage/drivers/btrfs: Pass VolumeCopy for genericVFSMigrateVolume
- test/main: add log grouping (GHA)
- test/main: show dmesg on failure
- github: capture dmesg if setting up microceph fails
- lxd/db/networks: Differentiate not found errors from other errors in GetNetworkWithInterface
- lxd/networks/utils: Donāt log not found errors in networkAutoAttach
- lxd/devices: Log the device concerning the error from networkAutoAttach
- lxd/patches: Remove VM block vols from patchStorageUnsetInvalidBlockSettings
- lxd/storage/drivers/ceph: Donāt unset the block.* settings for VMs
- lxd/storage/drivers/lvm: Donāt unset the block.* settings for VMs
- lxd/api/internal: Use correct quoting for error in internalImportFromBackup
- lxd/db/cluster/devices: Use correct string quoting of device type for error in NewDeviceType
- lxd/instances/post: Improve error in createFromBackup
- lxd/storage/backend/lxd: Update backup.yaml after instance and volume DB records have been generated in CreateInstanceFromBackup
- lxd: Move
ExpandInstanceConfig
andExpandInstanceDevices
fromlxd/db
tolxd/instance/instancetype
package - lxd: Removes duplicate implementation of ExpandInstanceConfig and ExpandInstanceDevices
- lxd/endpoints/network/util/test: Remove incus references in Test_networkServerErrorLogWriter_shouldDiscard
- lxd/storage/backend_lxd: Pass right volume name when refreshing custom volumes
- client/lxd/instances: Adds API extension check for device override on import
- github: build lxd-benchmark binaries and upload as artifacts
- github: exit on error in microceph setup step
- test/main: donāt wrap tests logs in log groups
- lxc: Remove unnecessary client import alias.
- client: Add Devices field to InstanceBackupArgs
- lxd/db: Donāt propagate expected errors
- lxd/device/disk: Remove config.iso file when the cloud-init:config disk device is removed
- github: wait longer before retrying to download go-tip
- lxd/storage/backend_lxd: Pass custom storage volume snapshots in the right order
- incusd/images: Fix potential race condition
- lxd/images: Add project to error in autoSyncImages
- lxd/images: Adds ctx arg to imageSyncBetweenNodes
- lxd/project/project: Remove optimisation from StorageVolumeProject
- lxd/storage/volumes: Standardise project name and request project name variables
- lxd/storage/volumes/backup: Standardise project name and request project name variables
- lxd/storage/volumes/snapshot: Standardise project name and request project name variables
- lxd/storage/volumes/state: Standardise project name and request project name variables
- lxd/storage/volumes: Remove unnecessary 2 line variable definition in doCustomVolumeRefresh
- lxd/storage/volumes: Remove unnecessary 2 line variable definition in doVolumeCreateOrCopy
- lxd/storage/volumes: Validate source project in doCustomVolumeRefresh
- lxd/storage/volumes: Validate source project in doVolumeCreateOrCopy
- lxd/migration: Accept offered rsync features for BLOCK_AND_RSYNC
- Revert ālxd/migration: Accept offered rsync features for BLOCK_AND_RSYNCā
- lxd/migration: Accept offered rsync features for BLOCK_AND_RSYNC
- lxd/util: Rename ānodeā to ācluster memberā.
- lxd/db/cluster: Remove redunant parentheses.
- lxd/db/cluster: Rename ānodeā to ācluster memberā.
- lxd/db/cluster: Update error messages in unit tests.
- lxd/instance/drivers/lxc: Remove LXD 3.7 rsync feature exception
- lxd/storage/backend/lxd: Use volume name from the database in RefreshCustomVolume and CreateCustomVolumeFromCopy
- lxd/instance/drivers/qemu: Use a pointer for tracking operations
- lxd/migrate/storage/volumes: Use volume name from DB in migrationSourceWs.DoStorage
- lxd/migration/volumes: Revert adding rsync features for BLOCK_AND_RSYNC
- lxd/storage/drivers/ceph: Rename copyWithSnapshots to copyVolumeDiff
- lxd/storage/drivers/ceph: Add findLastCommonSnapshotIndex function
- lxd/storage/drivers/ceph: Add restoreVolume to skip a VMās filesytem volume
- lxd/storage/drivers/ceph: Add optimized volume refresh
- lxd/migration/protobuf: Add RBD_AND_RSYNC migration type
- lxd/migration/volumes: Support exchanging RBD_AND_RSYNC migration type
- lxd/storage/drivers/generic: Allow RBD_AND_RSYNC type to use the generic migration
- lxd/storage/drivers/ceph: Add optimized volume refresh for migration
- lxd/storage/drivers/ceph: Allow RBD migration type for volume refreshes
- lxd/storage/drivers/ceph: Use fixed size slices to improve performance
- lxd/storage/drivers/ceph: Clarify snapshot refresh behavior
- lxd/storage/drivers/ceph: Add RBD block copy and transfer log messages
- Makefile: Exclude dependency from spec generation.
- lxd/seccomp/seccomp: Fix incorrect conversion from uint32 to int in FindTGID
- lxd/instance/drivers/driver/qemu: Fix incorrect conversion of uint32 to int in acquireVsockID
- lxd/network/network/utils: Fix incorrect conversion from int64 to int in inRoutingTable
- lxd/util/net: Update CanonicalNetworkAddress and CanonicalNetworkAddressFromAddressAndPort to use platform agnostic int64 for port
- lxd/main/init: Update usage of CanonicalNetworkAddressFromAddressAndPort and CanonicalNetworkAddress
- lxd/storage/drivers/ceph: Send the actual block vol when migrating snapshot
- lxd/network/network/utils: Remove unnecessary call to fmt.Sprintf by passing base to ParseInt
- lxd/response: Use SmartError if SyncResponse success=false
- lxd/storage/drivers/ceph: Lock concurrent migrations
- lxd/storage/drivers/driver/zfs/volumes: Fix error scoping in CreateVolumeFromCopy
- lxd/storage/drivers/driver/zfs/volumes: Define send/receive channels together in CreateVolumeFromCopy
- lxd/storage/drivers/driver/zfs/volumes: Kill sender if receiver fails in CreateVolumeFromCopy
- lxd/storage/drivers/driver/zfs/volumes: Handle multi-line errors in CreateVolumeFromCopy
- lxd/storage/drivers/driver/btrfs/volumes: Fix hang when btrfs receive fails in RefreshVolume
- lxd/storage/drivers/driver/btrfs/volumes: Handle multi-line errors in RefreshVolume
- lxd/storage/drivers/driver/zfs/volumes: Aligns RefreshVolume with BTRFS driver
- shared/version: Include LTS flag in useragent
- lxd/response: Fallback to error response after setting headers
- lxd/storage/backend/lxd: Use volume name from VolumeDBGet in BackupCustomVolume
- lxd/storage/drivers/driver/btrfs/volumes: Cleanup on failure in RefreshVolume
- lxd/device/nic_ovn: Only stop device if network is populated
- lxc/copy.go: remove impossible condition
- lxd/instance/drivers/driver/qemu: Restore 50MB tmpfs for lxd-agent as it will likely exceed 25MB
- test/suites/basic: check version number format (X.Y.Z for LTSes, X.Y otherwise)
- lxc: Add context to socket access errors
- lxc/file: Get owner mode only if
--gid
or--uid
is unset - shared/api: Implement xerrors.Unwrap for StatusError.
- lxd/response: Wrap errors in api.StatusErrorf.
- lxd: Wrap errors in api.StatusErrorf.
- lxc: Wrap errors in api.StatusErrorf.
- lxd/storage/drivers/btrfs: Add createVolumeFromCopy for copy and refresh
- lxd/storage/drivers/btrfs: Use createVolumeFromCopy when copying a volume
- lxd/storage/drivers/btrfs: Use createVolumeFromCopy when refreshing a volume
- scripts/bash/lxd-client: use column to select the image alias
- scripts/bash/lxd-client: fix
lxc storage <TAB>
- scripts/bash/lxd-client: add missing keys to
lxc storage <TAB>
- scripts/bash/lxd-client: show pool names on
lxc storage info <TAB>
- scripts/bash/lxd-client: Use long option names
- lxd/instance/drivers/common: Clone the device config
- lxc: handle
GetImage
logic insidedereferenceAlias
- lxd/storage/drivers/btrfs: Clarify fallback in case UUID discovery times out
- lxd/storage/drivers/btrfs: Move config modifications into FillConfig
- lxd/patches: Add selectedPatchClusterMember for patch coordination
- lxd/patches: Add patchStorageRenameCustomISOBlockVolumesV2
- lxd/patches: Supersede patchStorageRenameCustomISOBlockVolumes
- lxd/patches: Add patchStorageUnsetInvalidBlockSettingsV2
- lxd/patches: Supersede patchStorageUnsetInvalidBlockSettings
- instance/drivers/driver_lxc: do not set āsoftā limit when hard limit is set
- lxd/storage/drivers/generic: Return cleanup hooks from genericVFSCopyVolume
- lxd/storage/drivers/ceph: Use the revert pattern for local refreshes
- lxd/storage/drivers/dir: Use cleanup hooks from genericVFSCopyVolume
- lxd/storage/drivers/lvm: Use cleanup hooks from genericVFSCopyVolume
- lxd/storage/drivers/zfs: Use cleanup hooks from genericVFSCopyVolume
- lxd/storage/drivers/generic: Return cleanup hooks from genericVFSCreateVolumeFromMigration
- lxd/storage/drivers/ceph: Use the revert pattern for migrations
- lxd/storage/drivers/btrfs: Use cleanup hooks from genericVFSCreateVolumeFromMigration
- lxd/storage/drivers/dir: Use cleanup hooks from genericVFSCreateVolumeFromMigration
- lxd/storage/drivers/lvm: Use cleanup hooks from genericVFSCreateVolumeFromMigration
- lxd/storage/drivers/zfs: Use cleanup hooks from genericVFSCreateVolumeFromMigration
- lxd/api_internal.go: remove impossible conditions
- lxd: Update instance types URL
- lxd/shared/util: create function for applying device overrides
- lxc/utils: create function for getting profile devices
- lxc/init: eliminate duplicated code
- lxc/copy: apply profile expansion on device override
- test: add test for device overriding on copy
- shared: Move
ParseIPRange
toshared/
- lxd/network: Use
shared.ParseIPRanges
- i18n: update translations
- lxd/db/cluster/open: Fix unit tests
- github: Add comment to explain why go 1.21 is used for code tests
- github: Use go 1.22 for system tests
- github: Test client builds using go 1.22
- build(deps): bump golang.org/x/term from 0.18.0 to 0.19.0
- build(deps): bump github.com/osrg/gobgp/v3 from 3.24.0 to 3.25.0
- build(deps): bump golang.org/x/crypto from 0.21.0 to 0.22.0
- build(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0
- build(deps): bump golang.org/x/oauth2 from 0.18.0 to 0.19.0
- test/lint/client-imports: rename godeps.list file
- test/lint/client-imports: export LC_ALL for predictable sorting
- test/lint: add lxd-agent-imports
- shared: Ignore invalid uid/gid values and truncate mode to perm bits
- lxd: Update uid/gid/mode API docs
- gitignore: Ignore all pycache under doc/
- shared/ioprogress: Support simple readers
- lxd/storage/drivers/btrfs: Report migration progress from receiver
- lxd/storage/drivers/btrfs: Use daemons shutdown context
- gitignore: Ignore all
.bak
- shared: Return new structure from
ParseLXDFileHeaders
- lxd: Refactor calls to
shared.ParseLXDFileHeaders
- client: Refactor calls to
shared.ParseLXDFileHeaders
- api: Add
instances_files_modify_permissions
extension - shared: Parse
X-LXD-modify-perm
header - lxd: Allow setting permissions for existing files via API
- client: Send
X-LXD-modify-perm
on file POST - lxc/file: Set ModifyExisting when --mode, --uid, or --gid are passed
- incusd/instance/qemu: Set auto-converge on all migrations
- incusd/device/disk: Remove bad comment
- lxc/config/default: Add images remote for images.lxd.canonical.com
- api: add image_restriction_nesting
- doc/images: introduce requirements.nesting
- internal/server/instance/lxd: add support for image.requirments.nesting
- lxc: Make
lxc init
andlxd launch
manpages more consistent - lxd/db: Remove
ErrAlreadyDefined
sentinel error. - lxd/db: Replace
ErrAlreadyDefined
with anapi.StatusError
. - lxd: Replace
db.ErrAlreadyDefined
with anapi.StatusError
. - lxd: Check for database conflicts using
api.StatusErrorCheck
. - lxd/instance: Check for database conflicts using
api.StatusErrorCheck
. - lxd/response: Remove dependency on
lxd/db
fromlxd/response
. - lxd/db: Update unit tests to check for 409 Conflict.
- tests: Update test_remote_usage to check for existing image on images.lxd.canonical.com
- test: Donāt use default 10GiB block volume in test_storage_volume_snapshots
- lxd/instance/instance/utils: Align validation terminology with that used for volume name validation
- lxd/instance/instance/utils: Indicate instance name is invalid
- lxd/instance/instance/utils: Include instance name in ValidName
- lxd/storage/utils: Adds ValidVolumeName function
- lxd/storage/volumes: storagePools.ValidVolumeName usage
- lxd/storage/backend/lxd: Adds validation of instance and volume names to CreateInstanceFromBackup
- instance/driver_lxc: get rid of redunant calls to cgroup.TaskSchedulerTrigger
- lxd/storage/backend/lxd: Improve volume name validation in CreateCustomVolumeFromBackup
- test/lint/godeps: rework dependency checking
- Enable renovate bot
- test/suites/container_devices_nic_bridged_filtering: silence SC2001
- Makefile: use bash with shellcheck
- shared/simplestreams: Fix delta always using container rootfs as source
- lxd/instances: Donāt start instances when evacuated
- client: Fix permissions extension typo
- test: Push permissions for existing files
- scripts/bash/lxd-client: add completion to lxc pause
- scripts/bash/lxd-client: complete lxc warning
- scripts/bash/lxd-client: sort some commands
- scripts/bash/lxd-client: add lxc remote switch
- lxd/storage/drivers/zfs: Fix refresh of VM volumes
- renovate: disable Dependency Dashboard
- renovate switch to recommended config preset
- github: move renovate.json out of the root dir
- github: check for lxd-agent binary size changes
- lxd/api/metrics: Avoid repeated calls to wg.Add in metricsGet
- lxd/config/default: Add images to DefaultRemotes
- lxd-benchmark: Improve error reporting in LaunchContainers
- github: check both lxc and lxd-agent binary sizes
- lxd/device/device_utils_disk: fix diskAddRootUserNSEntry to add root mapping only if itās required
- doc/file push: include information about permission flags
- scripts/bash/lxd-client: add ālxc operationā command
- scripts/bash/lxd-client: fix ālxc restoreā completion
- scripts/bash/lxd-client: add ālxc warningā command
- doc/rest-api: Refresh swagger YAML
- i18n: Update translations
- test/godeps/client.list: Update expected imports
- test/godeps/lxc-config: Update expected imports
- test/godeps/lxd-agent: Updated expected imports
- github: Update expected lxc cli size
- github: Update expected lxd-agent size
- Makefile: fail if any test/lint files are not executable
- Makefile: fail if any test/lint files are missing the .sh extension
- test/lint: make godeps.sh executable
- test/lint/godeps: display diff on failure
- build(deps): bump github.com/miekg/dns from 1.1.58 to 1.1.59
- doc: pin version of myst-parser
- github: Explicitly pass the -package flag to lxd-snapcraft
- build(deps): bump golang.org/x/term from 0.19.0 to 0.20.0
- build(deps): bump github.com/osrg/gobgp/v3 from 3.25.0 to 3.26.0
- build(deps): bump golang.org/x/oauth2 from 0.19.0 to 0.20.0
- build(deps): bump golang.org/x/text from 0.14.0 to 0.15.0
- build(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.1
- test: add new dependency to lxd-agent
- test: add new dependency to lxc client (stable-5.0 only)
- test: add new dependency to lxc-config (stable-5.0 only)
- build(deps): bump golang.org/x/crypto from 0.22.0 to 0.23.0
- build(deps): bump github.com/osrg/gobgp/v3 from 3.26.0 to 3.27.0
- build(deps): bump golang.org/x/text from 0.15.0 to 0.16.0
- build(deps): bump golang.org/x/term from 0.20.0 to 0.21.0
- build(deps): bump golang.org/x/crypto from 0.23.0 to 0.24.0
- build(deps): bump github.com/miekg/dns from 1.1.59 to 1.1.61
- build(deps): bump github.com/spf13/cobra from 1.8.0 to 1.8.1
- build(deps): bump github.com/gorilla/websocket from 1.5.1 to 1.5.3
- build(deps): bump google.golang.org/protobuf from 1.34.1 to 1.34.2
- github: temporarily ignore microceph enable rgw failing
- build(deps): bump golang.org/x/oauth2 from 0.20.0 to 0.21.0
- test/godeps: Remove 2 golang.org/x/net deps from client
- test/godeps: Remove 2 golang.org/x/net deps from lxc-config
- test/godeps: Remove 2 golang.org/x/net deps from lxd-agent
- test/suites/metrics: Add restricted and unrestricted certificate tests
- start the DNS listener after the networks are started
- updated the network_zone test to include a restarting the server case
- github: use non-shallow clones for differential shellcheck
- github: be stricter with shellcheck
- lxd/storage/drivers/lvm: Fix
source.wipe
- test: Fix setting
block.*
tests - Makefile: have dqlite build raft
- github: update env vars now that dqlite builds raft
- doc/installing: update env vars now that dqlite builds raft
- doc/installing: remove traces of raft being a separated lib
- Makefile: remove vendored raft lib from dist target
- Makefile: remove outdated comment
- lxd/fsmonitor/drviers/driver/fanotify: Donāt log error during shutdown
- lxd/storage/drivers/btrfs: Correctly detect raw disks
- test/suites/storage: source.wipe for lvm, btrfs, zfs
- lxd/storage/drivers/utils: fsUUID returns err for missing UUID
- lxd/storage/drivers: Add volume param to roundVolumeBlockSizeBytes
- lxd: Only allow force stop for frozen instances
- lxd: instance start also unfreezes
- lxd: instances_put start unfreezes instances
- test/basic: Add freeze tests
- lxd: Add int upper bound check
- lxd/cluster: Add int upper bound check
- Makefile: bind http server to 127.0.0.1 instead of 0.0.0.0
- lxd: Fix double unlock of the task groupās mutex
- lxd/task: Group usage comment
- lxd/storage/drivers/zfs: Round to zfs.blocksize or 16KiB
- lxd/storage/drivers: Refactor volume size rounding logic
- test/storage: Add non-power-of-two sized storage check
- lxd/storage/drivers: Fix linter errors
- lxd/instance/drivers: Remove unreachable condition
- lxd/config: Record error if type assertion fails
- lxc: Fix indent-error-flow by removing the else block
- lxc: Allow comparison of interface with bool
- lxd/cluster: Prefer not to defer chains of function calls
- lxd/main: Add missing comments for exported functions
- lxd/cluster: Remove redundant import alias
- lxd/cluster/config: Update error messages
- lxd/cluster/config: Update tests with latest error messages
- lxd/storage/btrfs: Fix btrfs argument order
- lxd/storage/btrfs: add space after comment marker
- test/storage: Remove zfs rounding test
- lxd/instance/drivers/driver_qemu: properly calculate VHOST_VSOCK_SET_GUEST_CID
- storage/drivers/driver_btrfs_utils: properly calculate BTRFS_IOC_SET_RECEIVED_SUBVOL
- idmap/shift_linux: fix a bunch of go linter warnings
- shared/idmap: Make get_userns_fd configure the userns
- lxd/seccomp: fix a bunch of linter errors
- lxd/network/driver_bridge: check the right error code when killing dnsmask
- lxd/network/driver_bridge: check the right error code when killing forkdns
- lxd/network/driver_bridge: remove redundant error checking
- lxd/network/common: remove unused clientType param for delete()
- lxd/network/utils: remove unused s param for usedByProfileDevices()
- lxc/info: remove unused remotes param for instanceInfo()
- lxd/cluster: remove unused cert param for loadInfo()
- lxd/storage/filesystem/fs: check for error when detecting btrfs
- lxc/list: remove unused conf param to listInstances()
- lxc/file: remove redundant error checking
- lxc/list: remove unused cInfo param to matchByNet()
- lxc-to-lxd: remove unused op param to transferRootfs()
- lxd-agent: remove unused debug param
- lxd-agent: remove unused daemon param to get*Metrics()
- lxd/apparmor: remove unused sysOS param to *Profile()
- lxd/apparmor/qemuimg: fix error check when creating subprocess
- lxd/db/cluster/update: remove redundant error check
- lxd/db/generate/file/write: remove unused imports param to resetInterface()
- lxd/db/generate/db/stmt: remove unused filters param to register()
- lxd/db/query/slices: remove unused typeName param to scanSingleColumn()
- lxd/device/device_utils_network: remove tautological nil check
- lxd/device/nic_ovn: remove unused uplink param to setupHostNIC()
- lxd/device/proxy: check the right error code when killing forkproxy
- lxd/dns/debug: remove unused zone param to debug()
- lxd/firewall/firewall_load: remove tautological check and remove dead code
- lxd/instance/drivers/qemu: avoid dereferencing nil
- lxd: remove unused forcecheck param to storageStartup()
- lxd/instance/drivers/qemu_metrics: remove unused monitor param to getQemuMemoryMetrics()
- lxd/daemon_storage: remove unused storageType param to mount()/umount()
- lxd/instance/drivers/common: remove unused stateful param to validateStartup()
- lxd/instance/drivers/qemu: remove unused configCopy param to deviceAttachNIC()
- lxd/instance_file: remove unused s and r params to instanceFileHead()
- lxd/instance_file: remove unused r param to instanceFileDelete()
- lxd/main_forkproxy: remove unused timeout param to genericRelay()
- lxd/storage/drivers/cephobject: remove unused bucket param to radosgwadminBucketSetQuota()
- lxd/instance/drivers/driver_qemu: Fix indentation.
- lxc/file: simplify loop by continuing early
- lxc/list: remove duplicated comment marker
- lxc/list: return early in loop
- lxd/apparmor/dnsmasq: omit unneeded type declaration
- lxd/apparmor/forkdns: omit unneeded type declaration
- lxd/apparmor/forkproxy: omit unneeded type declaration
- lxd/apparmor/qemuimg: omit unneeded type declaration
- lxd/apparmor/qemuimg: add space after comment marker
- lxc-to-lxd/main_migrate: return early in loop
- lxd/main_forkproxy: UDP should be capitalized
- lxd/storage/drivers/cephobject_buckets: fix comment for CreateBucketKey()
- lxd/instance_file: remove uneeded else clauses
- lxc/list: unexport architectureColumnData()
- lxc/list: unexport storagePoolColumnData()
- lxc/list: unexport createdColumnData()
- lxc/list: unexport numberOfProcessesColumnData()
- lxc/list: unexport profilesColumnData()
- lxc/list: unexport lastUsedColumnData()
- lxc/list: add comments to exported functions
- lxc/file: add comments to exported functions
- lxc/info: add comments to exported functions
- lxd/main_forkproxy: add comments to exported functions
- lxc-to-lxd/main_migrate: add comments to exported functions
- lxd-agent: add comments to exported functions
- lxd/apparmor/qemuimg: add comment to exported function
- lxd/device/device_utils_network: add space after comment marker
- lxc: Remove deferred statements from loops (defer).
- lxc: Fix datarace in lxc file get (datarace).
- lxc: Use named returns where appropriate (confusing-results).
- lxc: Check all type assertions (unchecked-type-assertion).
- lxc: Replace
interface{}
withany
(use-any). - lxc: Fix comments (comment-spacings).
- lxd-agent/devlxd: Removes unused reference to daemon.Debug
- lxd/events: Fix go linter error
- lxd/api/internal/recover: Ignore defer: prefer not to defer inside loops (revive) as this is intended
- lxd/api/internal/recover: Fix early-return from linter
- test/suites/image: fix export/import from alias to cope with .tar.xz extension
- test/suites/remote: delete project at the end of test_remote_url_with_token()
- test/suites/init_dump: remove network āmanaged: trueā from expected config dump
- test/suites/init_dump: add network āproject: defaultā to expected config dump
- lxd/device: Name parameters of the same type in
DiskParseRBDFormat
- test: Minor fix in tpm tests
- lxd/archive: Properly anchor exclude rules
- lxd/archive: add comment to exported function
- client: Remove clear-text logging of sensitive information
- lxd/device/device/utils/disk: Close derived unix listener socket when reverting in DiskVMVirtiofsdStart
- lxd/device/disk: Fix socket leak from DiskVMVirtiofsdStart when VM fails to start in startVM
- shared/cert: Set Not Before in self-signed cert to now-1minute
- shared/cert: Add comments to exported functions
- lxd-agent/events: Linter fix
- lxd/storage/drivers/ceph: Call genericVFSCreateVolumeFromMigration only once
- lxd/instance/drivers/load: Remove unnecessary check for device name length
- client/lxd_images: Remove check of an impossible error
- lxd/db/images: Populate source image type when fetching an image
- client/lxd_images: Handle potential panic when extracting values from operation metadata
- lxd/storage/drivers/ceph: Allow receiver to read VM filesystem vol via rsync
- lxd/storage/drivers/ceph: Clarify migration comments
- lxd/storage/drivers/dir: Quote paths in errors
- lxd/storage/drivers/dir: Allow lost+found subdir if source is root of the filesystem
- lxd/storage: Set correct volumeās volatile.uuid on refresh
- lxd/storage/drivers: Use context for tryExists
- lxd/storage/drivers/btrfs: Use 10s timeout context for tryExists
- lxd/stroage/drivers/btrfs: Fix typo in comment
- test: Add dir storage pool test for empty mounted filesystem
- lxd/apparmor/network_forkdns: forkdns binds port 1053 (no need for CAP_NET_BIND_SERVICE)
- lxd/apparmor/network_forkdns: forkdns talks to dnsmasq which also listens on TCP/53
- test/suites/clustering: improve grep patterns to be safer
- test/suites/clustering: make better use of alternations in grep pattern
- i18n: Update translation templates
- lxd/storage/drivers/zfs: Wait for device to appear when activating a volume
- gomod: Update dependencies
- test/godeps/lxd-agent: Update deps list
- lxd/config: Update error messages
- lxd/apparmor/instance_lxc: allow devpts for unprivileged containers
- lxd/config: Update tests with latest error messages
- lxd/storage/drivers/zfs: Check for non /dev/zvol/* paths
- lxd/util: Split
CheckTrustState
into two functions. - lxd/cluster: Update calls to util.CheckTrustState.
- lxd-agent: Update calls to util.CheckTrustState.
- lxd: Update calls to util.CheckTrustState.
- lxd: Refactor
(*Daemon).Authenticate
method. - lxd: Update comment on server certificate mTLS checks.
- lxd: Disallow certificate creation in CA mode if cert is not signed by CA.
- lxd/util: Update info log to indicate CA restriction applies to clients.
- shared: Set
GetClientCertificate
in TLS config. - shared: Add comments to exported functions (revive: exported).
- test/suites: Improve PKI test coverage.
- build(deps): bump github.com/osrg/gobgp/v3 from 3.27.0 to 3.28.0
- build(deps): bump golang.org/x/term from 0.21.0 to 0.22.0
- doc/metadata: Drop now unused file
- lxd/instance/drivers/driver/lxc: Re-generate lxc.conf during Exec
- lxd/instance/drivers/driver/lxc: Improve error message for loading go-lxc
- lxc: Add validation for non-empty remote address
- lxd/device: Allow zfs storage pools in degraded state
- gomod: Revert github.com/gorilla/websocket to v1.5.1
- lxd/instance/exec: Only use keepalives on TCP sockets
- i18n: Update translation templates
- test/godeps: Updates go deps
- lxd/device/config: Fix return values of Update function
- lxd/device: Update confusing error message
- lxd/certificates: Improve expiry validation checks in clusterMemberJoinTokenValid
- test: Reduce unnecessarily long sleep in test_remote_url_with_token
- test/includes/lxd: optimize spawn_lxd()
- test/includes/storage: optimize storage_backend()
- test/suites/backup: replace
lxc rm
bylxc delete
- test/suites/backup: list content of untarāed directory
- lxd/apparmor: fix linter errors
- Removes CODEOWNERS file
- lxd: Fix lint errors (revive: unchecked-type-assertion).
- lxd: Remove log formatting and use log context instead.
- lxd: Add comments to exported types/methods (revive: exported).
- test: Adds a test for the none device
- shared/util_linux: Fix linting issues
- lxd/storage/backend_lxd: Use contexctual logger in CreateInstanceFromMigration
- lxd/migrate*: Add missing comments to exported functions
- lxd-migrate: Remove unused input argument
- lxd-migrate: Rename util function to transferRootDiskForMigration
- lxd-migrate: Extract helper function for sending block volume
- lxd/migrate: Fix migrationSinkArgs comment
- lxd: Standardise on āerrā field in contextual logging for error
- lxd/migrate_storage_volume: Add comments to public functions
- lxd: Update logic for project config patch
- test/suites: Add testing for project PATCH
- lxd/device/device/utils/disk: Update DiskVMVirtiofsdStart to use chroot sandbox mode on pre pidfd_open kernels
- lxd: DiskVMVirtiofsdStart usage
- lxd/device/device/utils/disk: Removes unused execPath arg from DiskVMVirtiofsdStart
- lxd: DiskVMVirtiofsdStart usage
- lxd: Standardise on err field for logging errors
- build(deps): bump github.com/pkg/xattr from 0.4.9 to 0.4.10
- test: use bash and separately set options
- Add a shellcheck RC to default to bash flavor
- test/suites/security: avoid reusing standard UID shell variable
- test/suites/clustering: fix variable shadowing/reuse/uninit
- build(deps): bump github.com/canonical/go-dqlite from 1.21.0 to 1.22.0
- build(deps): bump github.com/go-macaroon-bakery/macaroon-bakery/v3
- build(deps): bump golang.org/x/oauth2 from 0.21.0 to 0.22.0
- build(deps): bump github.com/osrg/gobgp/v3 from 3.28.0 to 3.29.0
- build(deps): bump golang.org/x/sync from 0.7.0 to 0.8.0
- test: add new dependency to lxd-agent
- build(deps): bump golang.org/x/term from 0.22.0 to 0.23.0
- build(deps): bump golang.org/x/sys from 0.22.0 to 0.24.0
- build(deps): bump golang.org/x/text from 0.16.0 to 0.17.0
- build(deps): bump github.com/zitadel/oidc/v2 from 2.12.0 to 2.12.1
- doc/requirements: bump Go min to 1.21.0
- doc: use Go 1.21 on readthedocs
- Makefile: Switch back to using go mod tidy for min go version checking at 1.21
- github: pull GOMIN from Makefile
- github: make sure doc requirement for Go version stays in sync
- github: test with Go 1.21 as the oldest version supported
- test/godeps/client: Update depedencies
- test/godeps/lxc/config: Update depedencies
- test/godeps/lxd-agent: Update depedencies
- Makefile: pin gorilla/websocket version
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.22 to 1.14.23
- build(deps): bump golang.org/x/crypto from 0.26.0 to 0.27.0
- lxd/apparmor/lxc: Fix rule syntax
- lxd/apparmor/lxc: Tweak rule syntax
- lxd/apparmor/lxc: remove dup mount options rules
- lxd/apparmor/lxc: reorganize mount options rules for priv containers
- lxd/apparmor/instance_lxc: allow devpts for unprivileged containers
- lxd/apparmor/feature_check: add infastructure to check AppArmor features
- lxd/apparmor/instance_lxc: allow nosymfollow mount flag
- lxd/apparmor: allow userns for security.nesting=true case
- lxd/apparmor/instance_lxc: allow nosymfollow mount flag in more cases
- lxd/apparmor/instance_lxc: fix all ro+remount rules
- lxd/apparmor/instance_lxc: allow procfs for unprivileged containers
- lxd/apparmor/instance_lxc: allow sysfs for unprivileged containers
- lxd/storage/drivers/driver/dir/utils: Improve errors in setQuota
- lxd/storage/quota/projectquota: Donāt fail on missing file in SetProject
- lxd/instance/drivers: Fix deadlock during failed snapshot creation
- shared/util: Handle percentage only updates
- lxd/instance/drivers: Allow zfs containers with fullā¦
- lxd/instances/qemu: Donāt fail event sending on missing agent
- lxd/storage/drivers/zfs: Always call tryGetVolumeDiskPathFromDataset
- lxd/storage/drivers/zfs: Call GetVolumeDiskPath instead of creating new contexts
- lxd/firewall/drivers: Fix netprio error message
- github: Disable renovate
- lxd/firewall: Fix iptablesClear on nft shim
- lxd/storage/backend/lxd: Pass full snapshot name when validating import in CreateInstanceFromBackup
- lxd/instance/instance/utils: Donāt allow snapshots named āā¦ā in ValidName
- lxd/instance/file: Add pattern matching for stat.Sys().(*sftp.FileStat) type assertion
- lxd/cluster: Donāt fail when notifying a serverā¦
- lxd/cluster: Test Notify with shutdown response
- lxd: Refresh the state on cluster put/join
- lxd/networks: Donāt fill network configs when joining
- lxd/networks: Update comment
- shared: Fix comment typo
- lxd/firewall/drivers: Make sure to always use locking
- github: Run
go test
verbosely - lxd/cluster: Ensure the cluster member config is always sorted
- lxd/patches: Log the stage of patches being applied
- lxd/patches: Fix patchesApply so that the specified stage takes effect
- lxd/patches: Fix patchVMRenameUUIDKey so that it uses the correct function to update snapshot config
- lxd/cluster: Enforce cluster join token name cannot be ānoneā
- lxd/cluster: Enforce cluster member name cannot be ānoneā
- lxd: Fix invalid FileResponse on empty console log
- lxd/recover: Add snapshot expiry when recovering instance snapshots
- lxd: Remove unused state argument from instancesShutdown
- lxd/storage/drivers/driver/zfs/volumes: Donāt use d.state.ShutdownCtx in GetVolumeDiskPath
- lxd/device/device_utils_disk: remove unused IsBlockdev()
- tests: Add snapshot expiry date test to test_container_recover() in backup.sh
- client: Fix potential panic-causing type assertions
- lxd/storage/drivers: Donāt needlessly re-apply project id on quota changes
- lxd/storage/drivers: Remove unnecessary
DeleteProject
- lxd/storage/drivers: Use
projectID
variable - lxc/network: remove unneeded nil check
- Bump min version of Go to 1.22
- github: Switch to go 1.22
- gomod: Update dependencies
- github: Align workflow on and concurrency settings with main
- test/lint/godeps: donāt abort on first error
- test/godeps: Update deps
- test: Test exit codes upon container disconnect
- lxd/instance/drivers/qemu: Fix RecordOutput
- lxd/init: Differentiate managed and unmanaged network
- lxc: Fix exporting vm backups to stdout
- test/lint: Use agent tags when listing dependencies.
- lxd/storage/drivers: Return growFileSystem errors
- lxd/daemon: Fix log format
- lxd/sys: Sort kernel features
- test: Donāt collapse dmesg in CI when thereās a kernel call trace
- tests: Donāt over-provision test volume
- lxc/config/default: add trailing slash to
ubuntu:
URL - shared/api/image: add trailing slash to
ubuntu:
URL - shared/api/instance: add trailing slash to
ubuntu:
URL - test/suites/remote: add tailing slash to
ubuntu:
URL - lxc/config/default: add trailing slash to
ubuntu-daily:
URL - Makefile: suggest committing translation template updates if any
- Makefile: make update-pot reproducible by ignore creation-date changes
- Makefile: suggest committing translation updates if any
- i18n: Update translation templates.
- i18n: Update translations.
- lxd/instance/drivers: Add ErrExecDisconnected
- lxd: Make VM shutdown/reboot exit cleanly
- lxd/instance/drivers: Handle websocket closing
- Makefile: Drop deprecated -d from go get
- Makefile: Bump minimum go version to 1.22.7
- gomod: Update depdendencies
- test/godeps: Update lxd-agent deps list
- doc: make update-api
- doc/sphinx: replace link to new forum
- doc/cloud-init: update URL of
images:
- doc/external_resources: update URL of
images:
- doc/installing: update link to how to manage the LXD snap
- doc/howto/images_create: point to LXD image builder
- docs: Add description of ubuntu-minimal remote image servers
- doc: add back information about
images:
remote - po: remove outdated āManipulate container images.\nā section
- po: remove outdated āIf this is your first run, ā¦ā section
- doc: add back information about
images:
remote - build(deps): bump github.com/mattn/go-sqlite3 from 1.14.23 to 1.14.24
- build(deps): bump golang.org/x/sys from 0.25.0 to 0.26.0
- build(deps): bump golang.org/x/text from 0.18.0 to 0.19.0
- build(deps): bump golang.org/x/term from 0.24.0 to 0.25.0
- build(deps): bump golang.org/x/crypto from 0.27.0 to 0.28.0
- lxd/instance/drivers/driver/lxc: Use correct container name in Update call to liblxc
- lxd/patches: Use consistent naming of project in log messages
- lxd/devices: use builtin min() (Go 1.21+)
- test/suites/backup: ignore time discrepancies when untarāing
- lxd/apparmor: Include CAP_SYS_ADMIN in rsync AppArmor profile
- Makefile: Build lxd-user as static binary
- Makefile: Remove unused nocache and race targets
- Makefile: Removes unused staticcheck target
- Makefile: Move lxd-benchmark to be built statically
- lxd-user: Add container stop callhook support
- lxd/main/callhook: Use callhook package from lxd-user
- lxd: Change token pruning task to hourly.
- shared: Use correct
WaitStatus
type - test/suites/exec: Add test for signaled processesā exit codes
- test/suites/exec: More time for guest exec sleep
- test/suites/container_devices_nic_bridged_filtering: unload br_netfilter once done
- Makefile: Align with main
- gomod: Update deps
- lxd/network/driver_ovn: Fix CIDR size check
- lxd/network/driver_bridge: fix IPv6 CIDR size check
- lxd/network/driver_ovn: fix IPv6 CIDR size check
- Makefile: stop testing with flake8 during static-analysis
- test/deps/import-busybox: format with
ruff format
- test/deps/import-busybox: upgrade to python 3.8+
- lxd/network/driver_ovn: allow subnets smaller than /64
- lxc/remote: Use trust token to validate the remote certificate
- i18n: Update translation templates.
- i18n: Update translations.
- lxd/network/driver/bridge: Handle concurrent collection of member leases correctly
- lxc/profile: Fix typo in profile set usage
- i18n: Update translation templates.
- i18n: Update translations.
- gomod: Update deps
- doc/reference/remote_image_servers: embed discourse post title as link text
- doc/installing: embed discourse post titles as link texts
- build(deps): bump github.com/pkg/sftp from 1.13.6 to 1.13.7
- lxd: Use explicit cluster addr when core addr is wildcard
- lxd/cluster: Replace deprecated Recover with ReconfigureMembership
- lxd/db: Linter fixes
- lxc: Handle interupts properly to clean spice socket and avoid accumulation
- doc: Update MicroCloud reference
- gomod: Bumped go-dqlite to v2.0.0 LTS
- lxd: Switched to go-dqlite v2 LTS
- gomod: Update deps
- github: Use go mod version of go
- Makefile: Use dqlite lts-1.17.x when building deps and making dist tarball
- github: Use libdqlite1.17 ppa for dqlite
- lxd/network: Consider volatile IP in ovnNetworkExternalSubnets
- build(deps): bump golang.org/x/sync from 0.8.0 to 0.9.0
- build(deps): bump golang.org/x/text from 0.19.0 to 0.20.0
- build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0
- build(deps): bump golang.org/x/oauth2 from 0.23.0 to 0.24.0
- build(deps): bump golang.org/x/term from 0.25.0 to 0.26.0
Downloads
The release tarballs can be found on our download page.
Binary builds are also available for:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc