Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock Control: affects -1 + src:lxd
Please unblock package lxd [ Reason ] Added a missing Replaces in d/control for bin:lxd-client to address an upgrade edge case from bullseye where lxc was already installed and some other package being upgraded Depends/Recommends lxd which could potentially result in a dpkg error (see #1034971). lxd has autopkgtests, but as we're now within 20 days of the full freeze, a manual unblock is required. [ Impact ] There's a chance that an upgrade from bullseye to bookworm might fail. Additionally, this upload of lxd to unstable reset the migration counter before lxd 5.0.2-4 was able to migrate with a fix for running with the version of qemu in testing. [ Tests ] I manually tested installing lxd-client on a bullseye system with lxc installed: > Preparing to unpack lxd-client_5.0.2-3_amd64.deb ... > Unpacking lxd-client (5.0.2-3) ... > dpkg: error processing archive lxd-client_5.0.2-3_amd64.deb (--install): > trying to overwrite '/usr/share/bash-completion/completions/lxc', which is > also in package lxc 1:4.0.6-2+deb11u2 > dpkg-deb: error: paste subprocess was killed by signal (Broken pipe) With the fix: > Preparing to unpack .../lxd-client_5.0.2-5_amd64.deb ... > Unpacking lxd-client (5.0.2-5) ... > Replacing files in old package lxc (1:4.0.6-2+deb11u2) ... [ Risks ] I don't believe there are any risks with this change. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing [ Other info ] As mentioned, lxd 5.0.2-4 had been on track to automatically migrate around May 14 with a fix for use with the version of qemu in testing (see #1030365). Since the requested debdiff is against the version of lxd in testing, it contains changes from both -4 and -5. unblock lxd/5.0.2-5
diff -Nru lxd-5.0.2/debian/changelog lxd-5.0.2/debian/changelog --- lxd-5.0.2/debian/changelog 2023-03-08 02:27:33.000000000 +0000 +++ lxd-5.0.2/debian/changelog 2023-05-05 12:42:21.000000000 +0000 @@ -1,3 +1,16 @@ +lxd (5.0.2-5) unstable; urgency=medium + + * Add missing Replaces in d/control for lxd-client to fix potential bullseye + upgrade issue (Closes: #1034971) + + -- Mathias Gibbens <gib...@debian.org> Fri, 05 May 2023 12:42:21 +0000 + +lxd (5.0.2-4) unstable; urgency=medium + + * Cherry-pick upstream fix for qemu >= 7.2 (Closes: #1030365) + + -- Mathias Gibbens <gib...@debian.org> Sun, 23 Apr 2023 17:50:08 +0000 + lxd (5.0.2-3) unstable; urgency=medium * Cherry-pick upstream commit to fix issue with btrfs-progs >= 6.0 diff -Nru lxd-5.0.2/debian/control lxd-5.0.2/debian/control --- lxd-5.0.2/debian/control 2023-03-08 02:27:33.000000000 +0000 +++ lxd-5.0.2/debian/control 2023-05-05 12:42:21.000000000 +0000 @@ -99,8 +99,9 @@ Package: lxd-client # The lxc binary doesn't depend on liblxc1, so it can be built for any architecture Architecture: any -# lxc prior to 5.0.0 shipped a file that conflicts with LXD (see #1010843) -Breaks: lxc (<< 1:5.0.0) +# lxc prior to 5.0.1 shipped a file that conflicts with LXD (see #1010843, #1034971) +Breaks: lxc (<< 1:5.0.1) +Replaces: lxc (<< 1:5.0.1) Depends: ${misc:Depends}, ${shlibs:Depends} Built-Using: ${misc:Built-Using} diff -Nru lxd-5.0.2/debian/patches/006-cherry-pick-btrfs-fix.patch lxd-5.0.2/debian/patches/006-cherry-pick-btrfs-fix.patch --- lxd-5.0.2/debian/patches/006-cherry-pick-btrfs-fix.patch 2023-03-08 02:27:33.000000000 +0000 +++ lxd-5.0.2/debian/patches/006-cherry-pick-btrfs-fix.patch 2023-05-05 12:42:21.000000000 +0000 @@ -1,3 +1,6 @@ +From: Mathias Gibbens <gib...@debian.org> +Description: Cherry-pick upstream commit to fix issue with btrfs-progs >= 6.0 +Origin: https://github.com/lxc/lxd/pull/11333 From e7c852e43c0479060e630adb50342d2552a6cdad Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Tue, 7 Feb 2023 10:04:27 +0000 diff -Nru lxd-5.0.2/debian/patches/007-cherry-pick-qemu-fix.patch lxd-5.0.2/debian/patches/007-cherry-pick-qemu-fix.patch --- lxd-5.0.2/debian/patches/007-cherry-pick-qemu-fix.patch 1970-01-01 00:00:00.000000000 +0000 +++ lxd-5.0.2/debian/patches/007-cherry-pick-qemu-fix.patch 2023-05-05 12:42:21.000000000 +0000 @@ -0,0 +1,90 @@ +From: Mathias Gibbens <gib...@debian.org> +Description: Cherry-pick upstream fix for qemu >= 7.2, rebase, and drop SEV features not in current LTS release +Origin: https://github.com/lxc/lxd/pull/11594 +diff --git a/lxd/instance/drivers/driver_qemu.go b/lxd/instance/drivers/driver_qemu.go +index 9dcdd9da7..08211b034 100644 +--- a/lxd/instance/drivers/driver_qemu.go ++++ b/lxd/instance/drivers/driver_qemu.go +@@ -2878,17 +2878,11 @@ func (d *qemu) generateQemuConfigFile(mountInfo *storagePools.MountInfo, busName + // addCPUMemoryConfig adds the qemu config required for setting the number of virtualised CPUs and memory. + // If sb is nil then no config is written. + func (d *qemu) addCPUMemoryConfig(cfg *[]cfgSection) error { +- drivers := DriverStatuses() +- info := drivers[instancetype.VM].Info +- if info.Name == "" { +- return fmt.Errorf("Unable to ascertain QEMU version") +- } +- + // Figure out what memory object layout we're going to use. + // Before v6.0 or if version unknown, we use the "repeated" format, otherwise we use "indexed" format. + qemuMemObjectFormat := "repeated" + qemuVer6, _ := version.NewDottedVersion("6.0") +- qemuVer, _ := version.NewDottedVersion(info.Version) ++ qemuVer, _ := d.version() + if qemuVer != nil && qemuVer.Compare(qemuVer6) >= 0 { + qemuMemObjectFormat = "indexed" + } +@@ -3154,11 +3148,9 @@ func (d *qemu) addDriveConfig(bootIndexes map[string]int, driveConf deviceConfig + isRBDImage := strings.HasPrefix(driveConf.DevPath, device.RBDFormatPrefix) + + // Check supported features. +- drivers := DriverStatuses() +- info := drivers[d.Type()].Info +- + // Use io_uring over native for added performance (if supported by QEMU and kernel is recent enough). + // We've seen issues starting VMs when running with io_ring AIO mode on kernels before 5.13. ++ info := DriverStatuses()[instancetype.VM].Info + minVer, _ := version.NewDottedVersion("5.13.0") + if shared.StringInSlice(device.DiskIOUring, driveConf.Opts) && shared.StringInSlice("io_uring", info.Features) && d.state.OS.KernelVersion.Compare(minVer) >= 0 { + aioMode = "io_uring" +@@ -3592,12 +3584,21 @@ func (d *qemu) addNetDevConfig(busName string, qemuDev map[string]string, bootIn + qemuNetDev := map[string]any{ + "id": fmt.Sprintf("%s%s", qemuNetDevIDPrefix, escapedDeviceName), + "type": "tap", +- "vhost": true, ++ "vhost": false, // This is selectively enabled based on QEMU version later. + "script": "no", + "downscript": "no", + "ifname": nicName, + } + ++ // vhost-net network accelerator is causing asserts since QEMU 7.2. ++ // Until previous behaviour is restored or we figure out how to pass the veth device using ++ // file descriptors we will just disable the vhost-net accelerator. ++ qemuVer, _ := d.version() ++ vhostMaxVer, _ := version.NewDottedVersion("7.2") ++ if qemuVer != nil && qemuVer.Compare(vhostMaxVer) < 0 { ++ qemuNetDev["vhost"] = true ++ } ++ + queueCount := configureQueues(len(cpus)) + if queueCount > 0 { + qemuNetDev["queues"] = queueCount +@@ -6501,6 +6502,17 @@ func (d *qemu) checkFeatures(hostArch int, qemuPath string) ([]string, error) { + return features, nil + } + ++// version returns the QEMU version. ++func (d *qemu) version() (*version.DottedVersion, error) { ++ info := DriverStatuses()[instancetype.VM].Info ++ qemuVer, err := version.NewDottedVersion(info.Version) ++ if err != nil { ++ return nil, fmt.Errorf("Failed parsing QEMU version: %w", err) ++ } ++ ++ return qemuVer, nil ++} ++ + func (d *qemu) Metrics(hostInterfaces []net.Interface) (*metrics.MetricSet, error) { + if d.agentMetricsEnabled() { + metrics, err := d.getAgentMetrics() +@@ -6764,8 +6776,6 @@ func (d *qemu) setCPUs(count int) error { + + func (d *qemu) architectureSupportsCPUHotplug() bool { + // Check supported features. +- drivers := DriverStatuses() +- info := drivers[d.Type()].Info +- ++ info := DriverStatuses()[instancetype.VM].Info + return shared.StringInSlice("cpu_hotplug", info.Features) + } diff -Nru lxd-5.0.2/debian/patches/series lxd-5.0.2/debian/patches/series --- lxd-5.0.2/debian/patches/series 2023-03-08 02:27:33.000000000 +0000 +++ lxd-5.0.2/debian/patches/series 2023-05-05 12:42:21.000000000 +0000 @@ -3,3 +3,4 @@ 004-revert-use-of-go-criu.patch 005-add-mips-aliases.patch 006-cherry-pick-btrfs-fix.patch +007-cherry-pick-qemu-fix.patch diff -Nru lxd-5.0.2/debian/README.debian lxd-5.0.2/debian/README.debian --- lxd-5.0.2/debian/README.debian 2023-03-08 02:27:33.000000000 +0000 +++ lxd-5.0.2/debian/README.debian 2023-05-05 12:42:21.000000000 +0000 @@ -61,10 +61,6 @@ Known issues ============ - * Virtual machine creation is broken with QEMU version 7.2 when utilizing the - default network profile. As of March 2023, a fix has not yet been - identified (see bug #1030365 for further details). - * Running LXD and Docker on the same host can cause connectivity issues. A common reason for these issues is that Docker sets the FORWARD policy to DROP, which prevents LXD from forwarding traffic and thus causes the instances to lose
signature.asc
Description: This is a digitally signed message part