Compare commits
7 Commits
v9.0.2-4
...
v9.0.2-5+v
Author | SHA1 | Date | |
---|---|---|---|
e8e5ff8315 | |||
![]() |
f55fd376da | ||
![]() |
9b31b9a603 | ||
![]() |
3f36e3b77c | ||
![]() |
d1386d3f15 | ||
![]() |
e62423e615 | ||
![]() |
c93a5bfd4f |
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)
|
||||
|
22
debian/changelog
vendored
22
debian/changelog
vendored
@@ -1,3 +1,19 @@
|
||||
pve-qemu-kvm (9.0.2-5+vitastor1) bookworm; urgency=medium
|
||||
|
||||
* Add Vitastor support
|
||||
|
||||
-- Vitaliy Filippov <vitalif@yourcmc.ru> Sun, 09 Feb 2025 21:49:46 +0300
|
||||
|
||||
pve-qemu-kvm (9.0.2-5) bookworm; urgency=medium
|
||||
|
||||
* async snapshot: explicitly specify raw format when loading the VM state
|
||||
file
|
||||
|
||||
* vma create: rework CLI parameters for passing disk to a more structured
|
||||
style and use that to allow explicitly specifying the format
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 24 Jan 2025 14:59:17 +0100
|
||||
|
||||
pve-qemu-kvm (9.0.2-4) bookworm; urgency=medium
|
||||
|
||||
* async snapshot: ensure any dynamic vCPU-throttling applied for
|
||||
@@ -97,6 +113,12 @@ pve-qemu-kvm (9.0.0-2) bookworm; urgency=medium
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 17 May 2024 17:04:52 +0200
|
||||
|
||||
pve-qemu-kvm (8.1.5-6) bookworm; urgency=medium
|
||||
|
||||
* fix #5409: backup: fix copy-before-write timeout
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Mon, 29 Apr 2024 16:39:38 +0200
|
||||
|
||||
pve-qemu-kvm (9.0.0-1) bookworm; urgency=medium
|
||||
|
||||
* update submodule and patches to QEMU 9.0.0
|
||||
|
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},
|
||||
|
35
debian/patches/extra/0014-block-copy-before-write-use-uint64_t-for-timeout-in-.patch
vendored
Normal file
35
debian/patches/extra/0014-block-copy-before-write-use-uint64_t-for-timeout-in-.patch
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Date: Mon, 29 Apr 2024 15:41:11 +0200
|
||||
Subject: [PATCH] block/copy-before-write: use uint64_t for timeout in
|
||||
nanoseconds
|
||||
|
||||
rather than the uint32_t for which the maximum is slightly more than 4
|
||||
seconds and larger values would overflow. The QAPI interface allows
|
||||
specifying the number of seconds, so only values 0 to 4 are safe right
|
||||
now, other values lead to a much lower timeout than a user expects.
|
||||
|
||||
The block_copy() call where this is used already takes a uint64_t for
|
||||
the timeout, so no change required there.
|
||||
|
||||
Fixes: 6db7fd1ca9 ("block/copy-before-write: implement cbw-timeout option")
|
||||
Reported-by: Friedrich Weber <f.weber@proxmox.com>
|
||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Tested-by: Friedrich Weber <f.weber@proxmox.com>
|
||||
---
|
||||
block/copy-before-write.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/block/copy-before-write.c b/block/copy-before-write.c
|
||||
index b866e42271..3ee95c0e7a 100644
|
||||
--- a/block/copy-before-write.c
|
||||
+++ b/block/copy-before-write.c
|
||||
@@ -43,7 +43,7 @@ typedef struct BDRVCopyBeforeWriteState {
|
||||
BlockCopyState *bcs;
|
||||
BdrvChild *target;
|
||||
OnCbwError on_cbw_error;
|
||||
- uint32_t cbw_timeout_ns;
|
||||
+ uint64_t cbw_timeout_ns;
|
||||
|
||||
/*
|
||||
* @lock: protects access to @access_bitmap, @done_bitmap and
|
1277
debian/patches/pve-qemu-9.0-vitastor.patch
vendored
Normal file
1277
debian/patches/pve-qemu-9.0-vitastor.patch
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -29,7 +29,8 @@ Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
|
||||
improve condition for entering final stage
|
||||
adapt to QAPI and other changes for 8.2
|
||||
make sure to not call vm_start() from coroutine
|
||||
stop CPU throttling after finishing]
|
||||
stop CPU throttling after finishing
|
||||
force raw format when loading state as suggested by Friedrich Weber]
|
||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
---
|
||||
hmp-commands-info.hx | 13 +
|
||||
@@ -37,13 +38,13 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
include/migration/snapshot.h | 2 +
|
||||
include/monitor/hmp.h | 3 +
|
||||
migration/meson.build | 1 +
|
||||
migration/savevm-async.c | 545 +++++++++++++++++++++++++++++++++++
|
||||
migration/savevm-async.c | 549 +++++++++++++++++++++++++++++++++++
|
||||
monitor/hmp-cmds.c | 38 +++
|
||||
qapi/migration.json | 34 +++
|
||||
qapi/misc.json | 18 ++
|
||||
qemu-options.hx | 12 +
|
||||
system/vl.c | 10 +
|
||||
11 files changed, 693 insertions(+)
|
||||
11 files changed, 697 insertions(+)
|
||||
create mode 100644 migration/savevm-async.c
|
||||
|
||||
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
|
||||
@@ -141,10 +142,10 @@ index 95d1cf2250..800f12a60d 100644
|
||||
'threadinfo.c',
|
||||
diff --git a/migration/savevm-async.c b/migration/savevm-async.c
|
||||
new file mode 100644
|
||||
index 0000000000..1af32604c7
|
||||
index 0000000000..ae7ed68651
|
||||
--- /dev/null
|
||||
+++ b/migration/savevm-async.c
|
||||
@@ -0,0 +1,545 @@
|
||||
@@ -0,0 +1,549 @@
|
||||
+#include "qemu/osdep.h"
|
||||
+#include "migration/channel-savevm-async.h"
|
||||
+#include "migration/migration.h"
|
||||
@@ -641,12 +642,16 @@ index 0000000000..1af32604c7
|
||||
+ BlockBackend *be;
|
||||
+ Error *local_err = NULL;
|
||||
+ Error *blocker = NULL;
|
||||
+ QDict *options;
|
||||
+
|
||||
+ QEMUFile *f;
|
||||
+ size_t bs_pos = 0;
|
||||
+ int ret = -EINVAL;
|
||||
+
|
||||
+ be = blk_new_open(filename, NULL, NULL, 0, &local_err);
|
||||
+ options = qdict_new();
|
||||
+ qdict_put_str(options, "driver", "raw");
|
||||
+
|
||||
+ be = blk_new_open(filename, NULL, options, 0, &local_err);
|
||||
+
|
||||
+ if (!be) {
|
||||
+ error_setg(errp, "Could not open VM state file");
|
||||
|
@@ -193,7 +193,7 @@ index 32fd4a34fd..36a0cd8cc8 100644
|
||||
|
||||
/*
|
||||
diff --git a/migration/savevm-async.c b/migration/savevm-async.c
|
||||
index 1af32604c7..be2035cd2e 100644
|
||||
index ae7ed68651..cdd5ea6288 100644
|
||||
--- a/migration/savevm-async.c
|
||||
+++ b/migration/savevm-async.c
|
||||
@@ -386,7 +386,7 @@ void qmp_savevm_start(const char *statefile, Error **errp)
|
||||
@@ -205,7 +205,7 @@ index 1af32604c7..be2035cd2e 100644
|
||||
|
||||
if (!snap_state.file) {
|
||||
error_set(errp, ERROR_CLASS_GENERIC_ERROR, "failed to open '%s'", statefile);
|
||||
@@ -510,7 +510,8 @@ int load_snapshot_from_blockdev(const char *filename, Error **errp)
|
||||
@@ -514,7 +514,8 @@ int load_snapshot_from_blockdev(const char *filename, Error **errp)
|
||||
blk_op_block_all(be, blocker);
|
||||
|
||||
/* restore the VM state */
|
||||
|
@@ -10,16 +10,17 @@ skip reads.
|
||||
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
[FE: improvements during create
|
||||
allow partial restore]
|
||||
allow partial restore
|
||||
allow specifying disk formats for create operation]
|
||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
---
|
||||
block/meson.build | 2 +
|
||||
meson.build | 5 +
|
||||
vma-reader.c | 870 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
vma-writer.c | 817 +++++++++++++++++++++++++++++++++++++++++
|
||||
vma.c | 901 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
vma-reader.c | 870 ++++++++++++++++++++++++++++++++++++++++++
|
||||
vma-writer.c | 817 ++++++++++++++++++++++++++++++++++++++++
|
||||
vma.c | 941 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
vma.h | 150 ++++++++
|
||||
6 files changed, 2745 insertions(+)
|
||||
6 files changed, 2785 insertions(+)
|
||||
create mode 100644 vma-reader.c
|
||||
create mode 100644 vma-writer.c
|
||||
create mode 100644 vma.c
|
||||
@@ -1762,10 +1763,10 @@ index 0000000000..a466652a5d
|
||||
+}
|
||||
diff --git a/vma.c b/vma.c
|
||||
new file mode 100644
|
||||
index 0000000000..bb715e9061
|
||||
index 0000000000..8d4b4be414
|
||||
--- /dev/null
|
||||
+++ b/vma.c
|
||||
@@ -0,0 +1,901 @@
|
||||
@@ -0,0 +1,941 @@
|
||||
+/*
|
||||
+ * VMA: Virtual Machine Archive
|
||||
+ *
|
||||
@@ -1797,8 +1798,8 @@ index 0000000000..bb715e9061
|
||||
+ "usage: vma command [command options]\n"
|
||||
+ "\n"
|
||||
+ "vma list <filename>\n"
|
||||
+ "vma config <filename> [-c config]\n"
|
||||
+ "vma create <filename> [-c config] pathname ...\n"
|
||||
+ "vma config <filename> [-c <config>]\n"
|
||||
+ "vma create <filename> [-c <config>] [-d format=<format>:<device name>=<path> [-d ...]]\n"
|
||||
+ "vma extract <filename> [-d <drive-list>] [-r <fifo>] <targetdir>\n"
|
||||
+ "vma verify <filename> [-v]\n"
|
||||
+ ;
|
||||
@@ -2389,12 +2390,14 @@ index 0000000000..bb715e9061
|
||||
+{
|
||||
+ int c;
|
||||
+ int verbose = 0;
|
||||
+ bool expect_format = true;
|
||||
+ const char *archivename;
|
||||
+ GList *backup_coroutines = NULL;
|
||||
+ GList *config_files = NULL;
|
||||
+ GList *disk_infos = NULL;
|
||||
+
|
||||
+ for (;;) {
|
||||
+ c = getopt(argc, argv, "hvc:");
|
||||
+ c = getopt(argc, argv, "hvc:d:");
|
||||
+ if (c == -1) {
|
||||
+ break;
|
||||
+ }
|
||||
@@ -2406,6 +2409,9 @@ index 0000000000..bb715e9061
|
||||
+ case 'c':
|
||||
+ config_files = g_list_append(config_files, optarg);
|
||||
+ break;
|
||||
+ case 'd':
|
||||
+ disk_infos = g_list_append(disk_infos, optarg);
|
||||
+ break;
|
||||
+ case 'v':
|
||||
+ verbose = 1;
|
||||
+ break;
|
||||
@@ -2451,16 +2457,48 @@ index 0000000000..bb715e9061
|
||||
+ l = g_list_next(l);
|
||||
+ }
|
||||
+
|
||||
+ int devcount = 0;
|
||||
+ /*
|
||||
+ * Don't allow mixing new and old way to specifiy disks.
|
||||
+ * TODO PVE 9 drop old way and always require format.
|
||||
+ */
|
||||
+ if (optind < argc && g_list_first(disk_infos)) {
|
||||
+ unlink(archivename);
|
||||
+ g_error("Unexpected extra argument - specify all devices via '-d'");
|
||||
+ }
|
||||
+
|
||||
+ while (optind < argc) {
|
||||
+ const char *path = argv[optind++];
|
||||
+ expect_format = false;
|
||||
+ disk_infos = g_list_append(disk_infos, argv[optind++]);
|
||||
+ }
|
||||
+
|
||||
+ int devcount = 0;
|
||||
+ GList *disk_l = disk_infos;
|
||||
+ while (disk_l && disk_l->data) {
|
||||
+ char *disk_info = disk_l->data;
|
||||
+ const char *path = NULL;
|
||||
+ char *devname = NULL;
|
||||
+ path = extract_devname(path, &devname, devcount++);
|
||||
+ char *format = NULL;
|
||||
+ QDict *options = qdict_new();
|
||||
+
|
||||
+ if (try_parse_option(&disk_info, "format", &format, disk_info)) {
|
||||
+ qdict_put_str(options, "driver", format);
|
||||
+ } else {
|
||||
+ if (expect_format) {
|
||||
+ unlink(archivename);
|
||||
+ g_error("No format specified for device: '%s'", disk_info);
|
||||
+ } else {
|
||||
+ g_warning("Specifying a device without a format is deprecated"
|
||||
+ " - use '-d format=<format>:%s'",
|
||||
+ disk_info);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ path = extract_devname(disk_info, &devname, devcount++);
|
||||
+
|
||||
+ Error *errp = NULL;
|
||||
+ BlockBackend *target;
|
||||
+
|
||||
+ target = blk_new_open(path, NULL, NULL, 0, &errp);
|
||||
+ target = blk_new_open(path, NULL, options, 0, &errp);
|
||||
+ if (!target) {
|
||||
+ unlink(archivename);
|
||||
+ g_error("bdrv_open '%s' failed - %s", path, error_get_pretty(errp));
|
||||
@@ -2482,6 +2520,8 @@ index 0000000000..bb715e9061
|
||||
+ // Don't enter coroutine yet, because it might write the header before
|
||||
+ // all streams can be registered.
|
||||
+ backup_coroutines = g_list_append(backup_coroutines, co);
|
||||
+
|
||||
+ disk_l = g_list_next(disk_l);
|
||||
+ }
|
||||
+
|
||||
+ VmaStatus vmastat;
|
||||
@@ -2563,6 +2603,7 @@ index 0000000000..bb715e9061
|
||||
+
|
||||
+ g_list_free(backup_coroutines);
|
||||
+ g_list_free(config_files);
|
||||
+ g_list_free(disk_infos);
|
||||
+ vma_writer_destroy(vmaw);
|
||||
+ return 0;
|
||||
+}
|
||||
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@@ -87,3 +87,4 @@ pve/0044-copy-before-write-allow-specifying-minimum-cluster-s.patch
|
||||
pve/0045-backup-add-minimum-cluster-size-to-performance-optio.patch
|
||||
pve/0046-PVE-backup-add-fleecing-option.patch
|
||||
pve/0047-PVE-backup-improve-error-when-copy-before-write-fail.patch
|
||||
pve-qemu-9.0-vitastor.patch
|
||||
|
Reference in New Issue
Block a user