Compare commits
6 Commits
v10.0.2-4+
...
v9.2.0-7+v
Author | SHA1 | Date | |
---|---|---|---|
b2520b3757 | |||
85cdd3a24f | |||
![]() |
245689b9ae | ||
![]() |
a2ee4f403e | ||
![]() |
8fcd89fba8 | ||
![]() |
ec2acae08d |
2
Makefile
2
Makefile
@@ -58,7 +58,7 @@ $(BUILDDIR): submodule
|
||||
deb kvm: $(DEBS)
|
||||
$(DEB_DBG): $(DEB)
|
||||
$(DEB): $(BUILDDIR)
|
||||
cd $(BUILDDIR); dpkg-buildpackage -b -us -uc
|
||||
cd $(BUILDDIR); dpkg-buildpackage -b -us -uc -j32
|
||||
lintian $(DEBS)
|
||||
|
||||
sbuild: $(DSC)
|
||||
|
20
debian/changelog
vendored
20
debian/changelog
vendored
@@ -1,3 +1,23 @@
|
||||
pve-qemu-kvm (9.2.0-7+vitastor2) bookworm; urgency=medium
|
||||
|
||||
* Add Vitastor support
|
||||
|
||||
-- Vitaliy Filippov <vitalif@yourcmc.ru> Sun, 20 Jul 2025 16:39:14 +0300
|
||||
|
||||
pve-qemu-kvm (9.2.0-7) bookworm; urgency=medium
|
||||
|
||||
* savevm-async: reuse migration blocker check for snapshots/hibernation to
|
||||
avoid crashing a VM when on these actions if its configuration does not
|
||||
support them.
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 17 Jul 2025 22:34:53 +0200
|
||||
|
||||
pve-qemu-kvm (9.2.0-6) bookworm; urgency=medium
|
||||
|
||||
* gluster: provide more context for deprecation warning.
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 02 Jul 2025 12:30:27 +0200
|
||||
|
||||
pve-qemu-kvm (9.2.0-5) bookworm; urgency=medium
|
||||
|
||||
* pve backup: backup-access api: simplify bitmap logic
|
||||
|
1
debian/control
vendored
1
debian/control
vendored
@@ -59,6 +59,7 @@ Depends: ceph-common (>= 0.48),
|
||||
libspice-server1 (>= 0.14.0~),
|
||||
libusb-1.0-0 (>= 1.0.17-1),
|
||||
libusbredirparser1 (>= 0.6-2),
|
||||
vitastor-client (>= 0.9.4),
|
||||
libuuid1,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends},
|
||||
|
1410
debian/patches/pve-qemu-9.2-vitastor.patch
vendored
Normal file
1410
debian/patches/pve-qemu-9.2-vitastor.patch
vendored
Normal file
File diff suppressed because it is too large
Load Diff
30
debian/patches/pve/0074-block-gluster-provide-more-context-for-deprecation-w.patch
vendored
Normal file
30
debian/patches/pve/0074-block-gluster-provide-more-context-for-deprecation-w.patch
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Date: Mon, 2 Jun 2025 12:56:16 +0200
|
||||
Subject: [PATCH] block/gluster: provide more context for deprecation warning
|
||||
|
||||
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Acked-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
block/gluster.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/block/gluster.c b/block/gluster.c
|
||||
index c3a9555591..71c4a60b02 100644
|
||||
--- a/block/gluster.c
|
||||
+++ b/block/gluster.c
|
||||
@@ -816,7 +816,11 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
|
||||
goto out;
|
||||
}
|
||||
|
||||
- warn_report_once("'gluster' is deprecated");
|
||||
+ warn_report_once("Native 'gluster' support will be deprecated and removed"
|
||||
+ " in Proxmox VE 9.");
|
||||
+ warn_report_once("Before upgrading, switch to accessing your Gluster"
|
||||
+ " storage as a directory storage or migrate to another"
|
||||
+ " storage type.");
|
||||
|
||||
filename = qemu_opt_get(opts, GLUSTER_OPT_FILENAME);
|
||||
|
150
debian/patches/pve/0075-savevm-async-reuse-migration-blocker-check-for-snaps.patch
vendored
Normal file
150
debian/patches/pve/0075-savevm-async-reuse-migration-blocker-check-for-snaps.patch
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Date: Wed, 18 Jun 2025 12:25:31 +0200
|
||||
Subject: [PATCH] savevm-async: reuse migration blocker check for
|
||||
snapshots/hibernation
|
||||
|
||||
Same rationale as with upstream QEMU commit 5aaac46793 ("migration:
|
||||
savevm: consult migration blockers"), migration and (async) snapshot
|
||||
are essentially the same operation and thus snapshot also needs to
|
||||
check for migration blockers. For example, this catches passed-through
|
||||
PCI devices, where the driver does not support migration and VirtIO-GL
|
||||
display, which also does not support migration yet.
|
||||
|
||||
In the case of VirtIO-GL, there were crashes [0].
|
||||
|
||||
However, the commit notes:
|
||||
|
||||
> There is really no difference between live migration and savevm, except
|
||||
> that savevm does not require bdrv_invalidate_cache to be implemented
|
||||
> by all disks. However, it is unlikely that savevm is used with anything
|
||||
> except qcow2 disks, so the penalty is small and worth the improvement
|
||||
> in catching bad usage of savevm.
|
||||
|
||||
and for Proxmox VE, suspend-to-disk with VMDK does use savevm-async
|
||||
and would be broken by simply using migration_is_blocked(). To keep
|
||||
this working, introduce a new helper that filters blockers with the
|
||||
prefix used by the VMDK migration blocker.
|
||||
|
||||
The function qemu_savevm_state_blocked() is called as part of
|
||||
savevm_async_is_blocked() so no check is lost with this
|
||||
patch. The helper is declared in migration/migration.c to be able to
|
||||
access the 'migration_blockers'.
|
||||
|
||||
The VMDK blocker message is declared via a '#define', because using a
|
||||
'const char*' led to the linker to complain about multiple
|
||||
declarations. The message does not include the reference to the block
|
||||
node anymore, but users can still easily find a VMDK disk in the VM
|
||||
configuration.
|
||||
|
||||
Note, this also "breaks" snapshot and hibernate with VNC clipboard by
|
||||
preventing it. Previously, this would "work", because the Proxmox VE
|
||||
API has no check yet, but the clipboard will be broken after rollback,
|
||||
in the sense that it cannot be used anymore, not just lost contents.
|
||||
So some users might consider adding the check here a breaking change
|
||||
even if it's technically correct to prevent snapshot and hibernate
|
||||
with VNC clipboard. But other users might rightfully complain about
|
||||
broken clipboard. And again, the check also prevents blockers from
|
||||
passed-through PCI devices, etc. so it seems worth tolerating that
|
||||
breakage.
|
||||
|
||||
[0]: https://forum.proxmox.com/threads/136976/
|
||||
|
||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Link: https://lore.proxmox.com/20250618102531.57444-1-f.ebner@proxmox.com
|
||||
---
|
||||
block/vmdk.c | 4 +---
|
||||
include/migration/blocker.h | 2 ++
|
||||
migration/migration.c | 24 ++++++++++++++++++++++++
|
||||
migration/migration.h | 1 +
|
||||
migration/savevm-async.c | 2 +-
|
||||
5 files changed, 29 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/block/vmdk.c b/block/vmdk.c
|
||||
index 78f6433607..f15cdaf0e7 100644
|
||||
--- a/block/vmdk.c
|
||||
+++ b/block/vmdk.c
|
||||
@@ -1402,9 +1402,7 @@ static int vmdk_open(BlockDriverState *bs, QDict *options, int flags,
|
||||
qemu_co_mutex_init(&s->lock);
|
||||
|
||||
/* Disable migration when VMDK images are used */
|
||||
- error_setg(&s->migration_blocker, "The vmdk format used by node '%s' "
|
||||
- "does not support live migration",
|
||||
- bdrv_get_device_or_node_name(bs));
|
||||
+ error_setg(&s->migration_blocker, "%s", MIGRATION_BLOCKER_VMDK);
|
||||
ret = migrate_add_blocker_normal(&s->migration_blocker, errp);
|
||||
if (ret < 0) {
|
||||
goto fail;
|
||||
diff --git a/include/migration/blocker.h b/include/migration/blocker.h
|
||||
index a687ac0efe..f36bfb2df1 100644
|
||||
--- a/include/migration/blocker.h
|
||||
+++ b/include/migration/blocker.h
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#define MIG_MODE_ALL MIG_MODE__MAX
|
||||
|
||||
+#define MIGRATION_BLOCKER_VMDK "The vmdk format used by a disk does not support live migration"
|
||||
+
|
||||
/**
|
||||
* @migrate_add_blocker - prevent all modes of migration from proceeding
|
||||
*
|
||||
diff --git a/migration/migration.c b/migration/migration.c
|
||||
index 491d9aa017..0b77e2a611 100644
|
||||
--- a/migration/migration.c
|
||||
+++ b/migration/migration.c
|
||||
@@ -1940,6 +1940,30 @@ bool migration_is_blocked(Error **errp)
|
||||
return false;
|
||||
}
|
||||
|
||||
+bool savevm_async_is_blocked(Error **errp)
|
||||
+{
|
||||
+ GSList *blockers = migration_blockers[migrate_mode()];
|
||||
+
|
||||
+ if (qemu_savevm_state_blocked(errp)) {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * The limitation for VMDK images only applies to live-migration, not
|
||||
+ * snapshots, see commit 5aaac46793 ("migration: savevm: consult migration
|
||||
+ * blockers").
|
||||
+ */
|
||||
+ while (blockers) {
|
||||
+ if (strcmp(error_get_pretty(blockers->data), MIGRATION_BLOCKER_VMDK)) {
|
||||
+ error_propagate(errp, error_copy(blockers->data));
|
||||
+ return true;
|
||||
+ }
|
||||
+ blockers = g_slist_next(blockers);
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/* Returns true if continue to migrate, or false if error detected */
|
||||
static bool migrate_prepare(MigrationState *s, bool resume, Error **errp)
|
||||
{
|
||||
diff --git a/migration/migration.h b/migration/migration.h
|
||||
index 3857905c0e..38e315f03f 100644
|
||||
--- a/migration/migration.h
|
||||
+++ b/migration/migration.h
|
||||
@@ -492,6 +492,7 @@ int migration_call_notifiers(MigrationState *s, MigrationEventType type,
|
||||
|
||||
int migrate_init(MigrationState *s, Error **errp);
|
||||
bool migration_is_blocked(Error **errp);
|
||||
+bool savevm_async_is_blocked(Error **errp);
|
||||
/* True if outgoing migration has entered postcopy phase */
|
||||
bool migration_in_postcopy(void);
|
||||
bool migration_postcopy_is_alive(MigrationStatus state);
|
||||
diff --git a/migration/savevm-async.c b/migration/savevm-async.c
|
||||
index f2b10b5519..bfedae9692 100644
|
||||
--- a/migration/savevm-async.c
|
||||
+++ b/migration/savevm-async.c
|
||||
@@ -375,7 +375,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
|
||||
return;
|
||||
}
|
||||
|
||||
- if (qemu_savevm_state_blocked(errp)) {
|
||||
+ if (savevm_async_is_blocked(errp)) {
|
||||
goto fail;
|
||||
}
|
||||
|
3
debian/patches/series
vendored
3
debian/patches/series
vendored
@@ -88,3 +88,6 @@ pve/0070-PVE-backup-implement-bitmap-support-for-external-bac.patch
|
||||
pve/0071-PVE-backup-backup-access-api-indicate-situation-wher.patch
|
||||
pve/0072-PVE-backup-backup-access-api-explicit-bitmap-mode-pa.patch
|
||||
pve/0073-PVE-backup-backup-access-api-simplify-bitmap-logic.patch
|
||||
pve/0074-block-gluster-provide-more-context-for-deprecation-w.patch
|
||||
pve/0075-savevm-async-reuse-migration-blocker-check-for-snaps.patch
|
||||
pve-qemu-9.2-vitastor.patch
|
||||
|
Reference in New Issue
Block a user