2020-07-09 14:15:49 +03:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Stefan Reiter <s.reiter@proxmox.com>
|
|
|
|
Date: Wed, 8 Jul 2020 11:57:53 +0200
|
|
|
|
Subject: [PATCH] PVE: add query_proxmox_support QMP command
|
|
|
|
|
|
|
|
Generic interface for future use, currently used for PBS dirty-bitmap
|
|
|
|
backup support.
|
|
|
|
|
|
|
|
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
|
|
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
2020-11-24 18:41:20 +03:00
|
|
|
[PVE: query-proxmox-support: include library version]
|
|
|
|
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
|
2020-07-09 14:15:49 +03:00
|
|
|
---
|
2021-03-16 19:30:22 +03:00
|
|
|
pve-backup.c | 9 +++++++++
|
|
|
|
qapi/block-core.json | 29 +++++++++++++++++++++++++++++
|
|
|
|
2 files changed, 38 insertions(+)
|
2020-07-09 14:15:49 +03:00
|
|
|
|
|
|
|
diff --git a/pve-backup.c b/pve-backup.c
|
2023-05-15 16:39:55 +03:00
|
|
|
index 8f18145255..1400c21c49 100644
|
2020-07-09 14:15:49 +03:00
|
|
|
--- a/pve-backup.c
|
|
|
|
+++ b/pve-backup.c
|
update submodule and patches to QEMU 8.0.0
Many changes were necessary this time around:
* QAPI was changed to avoid redundant has_* variables, see commit
44ea9d9be3 ("qapi: Start to elide redundant has_FOO in generated C")
for details. This affected many QMP commands added by Proxmox too.
* Pending querying for migration got split into two functions, one to
estimate, one for exact value, see commit c8df4a7aef ("migration:
Split save_live_pending() into state_pending_*") for details. Relevant
for savevm-async and PBS dirty bitmap.
* Some block (driver) functions got converted to coroutines, so the
Proxmox block drivers needed to be adapted.
* Alloc track auto-detaching during PBS live restore got broken by
AioContext-related changes resulting in a deadlock. The current, hacky
method was replaced by a simpler one. Stefan apparently ran into a
problem with that when he wrote the driver, but there were
improvements in the stream job code since then and I didn't manage to
reproduce the issue. It's a separate patch "alloc-track: fix deadlock
during drop" for now, you can find the details there.
* Async snapshot-related changes:
- The pending querying got adapted to the above-mentioned split and
a patch is added to optimize it/make it more similar to what
upstream code does.
- Added initialization of the compression counters (for
future-proofing).
- It's necessary the hold the BQL (big QEMU lock = iothread mutex)
during the setup phase, because block layer functions are used there
and not doing so leads to racy, hard-to-debug crashes or hangs. It's
necessary to change some upstream code too for this, a version of
the patch "migration: for snapshots, hold the BQL during setup
callbacks" is intended to be upstreamed.
- Need to take the bdrv graph read lock before flushing.
* hmp_info_balloon was moved to a different file.
* Needed to include a new headers from time to time to still get the
correct functions.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-05-15 16:39:53 +03:00
|
|
|
@@ -1054,3 +1054,12 @@ BackupStatus *qmp_query_backup(Error **errp)
|
2020-07-09 14:15:49 +03:00
|
|
|
|
|
|
|
return info;
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+ProxmoxSupportStatus *qmp_query_proxmox_support(Error **errp)
|
|
|
|
+{
|
|
|
|
+ ProxmoxSupportStatus *ret = g_malloc0(sizeof(*ret));
|
2020-11-24 18:41:20 +03:00
|
|
|
+ ret->pbs_library_version = g_strdup(proxmox_backup_qemu_version());
|
2020-07-09 14:15:49 +03:00
|
|
|
+ ret->pbs_dirty_bitmap = true;
|
2021-03-16 19:30:22 +03:00
|
|
|
+ ret->pbs_dirty_bitmap_savevm = true;
|
2020-07-09 14:15:49 +03:00
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
diff --git a/qapi/block-core.json b/qapi/block-core.json
|
update submodule and patches to QEMU 8.0.0
Many changes were necessary this time around:
* QAPI was changed to avoid redundant has_* variables, see commit
44ea9d9be3 ("qapi: Start to elide redundant has_FOO in generated C")
for details. This affected many QMP commands added by Proxmox too.
* Pending querying for migration got split into two functions, one to
estimate, one for exact value, see commit c8df4a7aef ("migration:
Split save_live_pending() into state_pending_*") for details. Relevant
for savevm-async and PBS dirty bitmap.
* Some block (driver) functions got converted to coroutines, so the
Proxmox block drivers needed to be adapted.
* Alloc track auto-detaching during PBS live restore got broken by
AioContext-related changes resulting in a deadlock. The current, hacky
method was replaced by a simpler one. Stefan apparently ran into a
problem with that when he wrote the driver, but there were
improvements in the stream job code since then and I didn't manage to
reproduce the issue. It's a separate patch "alloc-track: fix deadlock
during drop" for now, you can find the details there.
* Async snapshot-related changes:
- The pending querying got adapted to the above-mentioned split and
a patch is added to optimize it/make it more similar to what
upstream code does.
- Added initialization of the compression counters (for
future-proofing).
- It's necessary the hold the BQL (big QEMU lock = iothread mutex)
during the setup phase, because block layer functions are used there
and not doing so leads to racy, hard-to-debug crashes or hangs. It's
necessary to change some upstream code too for this, a version of
the patch "migration: for snapshots, hold the BQL during setup
callbacks" is intended to be upstreamed.
- Need to take the bdrv graph read lock before flushing.
* hmp_info_balloon was moved to a different file.
* Needed to include a new headers from time to time to still get the
correct functions.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-05-15 16:39:53 +03:00
|
|
|
index 705a65ab1a..1ac535fcf2 100644
|
2020-07-09 14:15:49 +03:00
|
|
|
--- a/qapi/block-core.json
|
|
|
|
+++ b/qapi/block-core.json
|
update submodule and patches to QEMU 8.0.0
Many changes were necessary this time around:
* QAPI was changed to avoid redundant has_* variables, see commit
44ea9d9be3 ("qapi: Start to elide redundant has_FOO in generated C")
for details. This affected many QMP commands added by Proxmox too.
* Pending querying for migration got split into two functions, one to
estimate, one for exact value, see commit c8df4a7aef ("migration:
Split save_live_pending() into state_pending_*") for details. Relevant
for savevm-async and PBS dirty bitmap.
* Some block (driver) functions got converted to coroutines, so the
Proxmox block drivers needed to be adapted.
* Alloc track auto-detaching during PBS live restore got broken by
AioContext-related changes resulting in a deadlock. The current, hacky
method was replaced by a simpler one. Stefan apparently ran into a
problem with that when he wrote the driver, but there were
improvements in the stream job code since then and I didn't manage to
reproduce the issue. It's a separate patch "alloc-track: fix deadlock
during drop" for now, you can find the details there.
* Async snapshot-related changes:
- The pending querying got adapted to the above-mentioned split and
a patch is added to optimize it/make it more similar to what
upstream code does.
- Added initialization of the compression counters (for
future-proofing).
- It's necessary the hold the BQL (big QEMU lock = iothread mutex)
during the setup phase, because block layer functions are used there
and not doing so leads to racy, hard-to-debug crashes or hangs. It's
necessary to change some upstream code too for this, a version of
the patch "migration: for snapshots, hold the BQL during setup
callbacks" is intended to be upstreamed.
- Need to take the bdrv graph read lock before flushing.
* hmp_info_balloon was moved to a different file.
* Needed to include a new headers from time to time to still get the
correct functions.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-05-15 16:39:53 +03:00
|
|
|
@@ -958,6 +958,35 @@
|
2020-07-09 14:15:49 +03:00
|
|
|
##
|
|
|
|
{ 'command': 'backup-cancel' }
|
|
|
|
|
|
|
|
+##
|
|
|
|
+# @ProxmoxSupportStatus:
|
|
|
|
+#
|
|
|
|
+# Contains info about supported features added by Proxmox.
|
|
|
|
+#
|
|
|
|
+# @pbs-dirty-bitmap: True if dirty-bitmap-incremental backups to PBS are
|
|
|
|
+# supported.
|
|
|
|
+#
|
2021-03-16 19:30:22 +03:00
|
|
|
+# @pbs-dirty-bitmap-savevm: True if 'dirty-bitmaps' migration capability can
|
|
|
|
+# safely be set for savevm-async.
|
|
|
|
+#
|
2020-11-24 18:41:20 +03:00
|
|
|
+# @pbs-library-version: Running version of libproxmox-backup-qemu0 library.
|
|
|
|
+#
|
2020-07-09 14:15:49 +03:00
|
|
|
+##
|
|
|
|
+{ 'struct': 'ProxmoxSupportStatus',
|
2020-11-24 18:41:20 +03:00
|
|
|
+ 'data': { 'pbs-dirty-bitmap': 'bool',
|
2021-03-16 19:30:22 +03:00
|
|
|
+ 'pbs-dirty-bitmap-savevm': 'bool',
|
2020-11-24 18:41:20 +03:00
|
|
|
+ 'pbs-library-version': 'str' } }
|
2020-07-09 14:15:49 +03:00
|
|
|
+
|
|
|
|
+##
|
|
|
|
+# @query-proxmox-support:
|
|
|
|
+#
|
|
|
|
+# Returns information about supported features added by Proxmox.
|
|
|
|
+#
|
|
|
|
+# Returns: @ProxmoxSupportStatus
|
|
|
|
+#
|
|
|
|
+##
|
|
|
|
+{ 'command': 'query-proxmox-support', 'returns': 'ProxmoxSupportStatus' }
|
|
|
|
+
|
|
|
|
##
|
|
|
|
# @BlockDeviceTimedStats:
|
|
|
|
#
|