5
0
mirror of git://git.proxmox.com/git/qemu-server.git synced 2025-01-24 02:04:10 +03:00

3266 Commits

Author SHA1 Message Date
Hannes Duerr
629923d025 migration: secure and use source volume names for deactivation
During migration, the volume names may change if the name is already in
use at the target location. We therefore want to save the original names
so that we can deactivate the original volumes afterwards.

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
2024-01-30 10:41:45 +01:00
Fiona Ebner
613fed51fa drive: product/vendor: add comment with rationale for limits
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2024-01-26 11:28:32 +01:00
Hannes Duerr
d1feab4aa2 fix #4957: add vendor and product information passthrough for SCSI-Disks
adds vendor and product information for SCSI devices to the json schema
and checks in the VM create/update API call if it is possible to add
these to QEMU as a device option

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
[FE: add missing space to exception message
     use config option for exception e.g. scsi0 rather than 'product'
     style fixes]
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2024-01-26 11:12:58 +01:00
Fabian Grünbichler
c1b2092d5e qemu_volume_snapshot_delete: drop (now) unused parameter
since we always determine the deviceid, passing in a possibly wrong value makes
no sense and could actually re-introduce bugs.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2024-01-09 10:25:11 +01:00
Fiona Ebner
c60586838a fix #2258: select correct device when removing drive snapshot via QEMU
The QMP command needs to be issued for the device where the disk is
currently attached, not for the device where the disk was attached at
the time the snapshot was taken.

Fixes the following scenario with a disk image for which
do_snapshots_with_qemu() is true (i.e. qcow2 or RBD+krbd=0):
1. Take snapshot while disk image is attached to a given bus+ID.
2. Detach disk image.
3. Attach disk image to a different bus+ID.
4. Remove snapshot.

Previously, this would result in an error like:
> blockdev-snapshot-delete-internal-sync' failed - Cannot find device=drive-scsi1 nor node_name=drive-scsi1

While the $running parameter for volume_snapshot_delete() is planned
to be removed on the next storage plugin APIAGE reset, it currently
causes an immediate return in Storage/Plugin.pm. So passing a truthy
value would prevent removing a snapshot from an unused qcow2 disk that
was still used at the time the snapshot was taken. Thus, and because
some exotic third party plugin might be using it for whatever reason,
it's necessary to keep passing the same value as before.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2024-01-09 10:11:17 +01:00
Hannes Duerr
a17c753528 drive: Create get_scsi_devicetype
Encapsulation of the functionality for determining the scsi device type
in a new function for reusability in QemuServer/Drive.pm

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
2024-01-05 16:26:25 +01:00
Hannes Duerr
028aee4554 Move NEW_DISK_RE to QemuServer/Drive.pm
Prepare for introduction of new helper

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
2024-01-05 16:26:25 +01:00
Hannes Duerr
ad464e0b87 Move path_is_scsi to QemuServer/Drive.pm
Prepare for introduction of new helper

Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
2024-01-05 16:26:25 +01:00
Fiona Ebner
498d7da470 fix #4501: TCP migration: start vm: move port reservation and usage closer together
Currently, volume activation, PCI reservation and resetting systemd
scope happen in between, so the 5 second expiretime used for port
reservation is not always enough.

It's possible to defer telling QEMU where it should listen for
migration and do so after it has been started via QMP. Therefore, the
port reservation can be moved very close to the actual usage.

Mentioned here for completeness and can still be done as an additional
change later if desired: next_migrate_port could be modified to
optionally return the open socket and it should be possible to pass
the file descriptor directly to QEMU, but that would require accepting
the connection before on the Perl side (otherwise leads to ENOTCONN
107). While it would avoid any races, it's not the most elegant
and the change at hand should be enough in all practical situations.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Acked-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Tested-by: Hannes Duerr <h.duerr@proxmox.com>
2024-01-03 11:31:53 +01:00
Alexandre Derumier
2f2da05217 cpu config: add QEMU 8.1 cpu models
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
[FE: add prefix to commit title, capitalize QEMU]
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-12-12 11:27:42 +01:00
Fiona Ebner
2754b7e4d6 schema: mention that migration with VNC clipboard is not yet supported
as this might be surprising to users.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-29 10:25:16 +01:00
Markus Frank
bb30eedfc6 migration: do not allow live-migration with clipboard=vnc
It is not yet supported for QEMU's vdagent device which is used for
the VNC clipboard.

The migration precondition API call will now treat the VNC clipboard
as a local resource. Thus the GUI blocks migration and shows:
"Can't migrate VM with local resources: clipboard=vnc"

QemuMigrate's prepare function will also abort live migration early
when using the VNC clipboard.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
[FE: adapt commit message a bit]
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-29 10:18:43 +01:00
Thomas Lamprecht
d440f52417 bump version to 8.0.10
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-22 14:12:52 +01:00
Stefan Lendl
0b034c15f4 sdn: pass vmid and hostname to add_dhcp_mapping
if no DHCP mapping was found in IPAM it will request a new IP which
requires these values.

Signed-off-by: Stefan Lendl <s.lendl@proxmox.com>
2023-11-21 20:51:56 +01:00
Wolfgang Bumiller
3d9a9c579c bump version to 8.0.9
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-11-21 15:47:55 +01:00
Wolfgang Bumiller
219540e6e4 d/control: recommend libpve-network-perl >= 0.8.3
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-11-21 14:52:17 +01:00
Wolfgang Bumiller
8497232bf5 fixup an sdn call outside the have_sdn guard
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-11-21 13:25:51 +01:00
Alexandre Derumier
3f14f206a0 nic online bridge/vlan change: link disconnect/reconnect
We want to notify guest of the change, so it can resubmit dhcp request,
or send gratuitous arp,...

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2023-11-21 13:24:50 +01:00
Alexandre Derumier
e6e6c2934d nic hotplug: add_dhcp_mapping
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2023-11-21 13:24:48 +01:00
Alexandre Derumier
89229af914 vm_destroy: delete ip from ipam
Co-Authored-By: Stefan Hanreich <s.hanreich@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2023-11-21 13:24:46 +01:00
Alexandre Derumier
ee8d2dea5c api2: create|restore|clone: add_free_ip
Co-Authored-by: Stefan Lendl <s.lendl@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2023-11-21 13:24:44 +01:00
Alexandre Derumier
6a6b668cf3 vm_start : vm-network-scripts: add_dhcp_reservation
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2023-11-21 13:24:43 +01:00
Alexandre Derumier
c944fef885 vmnic add|remove : add|del ip in ipam
Co-Authored-by: Stefan Lendl <s.lendl@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2023-11-21 13:24:41 +01:00
Thomas Lamprecht
2c651d846f tests: cfg2cmd: rename vnc-clipboard to lower-case and add description
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-20 16:36:51 +01:00
Markus Frank
3c4716a6b9 tests: add cases for clipboard with spice & std display
add one test case for a spice display and one for std

Signed-off-by: Markus Frank <m.frank@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
2023-11-20 16:21:00 +01:00
Markus Frank
bfd4595553 api: add clipboard variable to return at status/current
This can be used by noVNC to check if a clipboard is available.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
2023-11-20 16:20:26 +01:00
Markus Frank
b62997a171 config: enable VNC clipboard parameter in vga_fmt
add option to use the qemu vdagent implementation to enable the VNC
clipboard. When enabled with SPICE the spice-vdagent gets replaced
with the QEMU implementation.

This patch does not solve #1406, but does allow copy and paste with a
running X-session, when spice-vdagent is installed on the guest.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
2023-11-20 16:20:08 +01:00
Thomas Lamprecht
011e9ffdbd d/control: wrap-and-sort -tkn
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-20 16:19:35 +01:00
Thomas Lamprecht
90341c0d7e d/control: depend on split-out edk2-firmware packages
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-20 16:19:23 +01:00
Thomas Lamprecht
414d4b8e50 gitignore: sort content
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-17 15:54:24 +01:00
Stefan Lendl
8bdcf8a32d gitignore: add build output and .vscode to ignored files
Signed-off-by: Stefan Lendl <s.lendl@proxmox.com>
 [ TL: extend subject and use more specific build-dir glob ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-17 15:43:53 +01:00
Thomas Lamprecht
feb51881d7 bump version to 8.0.8
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-12 18:55:41 +01:00
Fiona Ebner
dec371d96c vm start: add warning about deprecated machine version
While there already is a warning from QEMU proper, that one is not
visible as a task warning and it's not straightforward to make it be
one, because QEMU is started inside a run_fork(). It's also more
future-proof to have the detection explicit on our side and the
documentation can be referenced.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-12 18:48:01 +01:00
Fiona Ebner
e13a66c8f7 test: migration: mock get_current_qemu_machine
by remembering the 'forcemachine' parameter that's passed along when
starting the target instance.

In preparation to introduce a call to get_current_qemu_machine after
starting a VM to check for machine version deprecation.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-12 18:48:01 +01:00
Fiona Ebner
da84155405 machine: get current: add flag if current machine is deprecated in list context
Will be used for a warning.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-12 18:48:01 +01:00
Fiona Ebner
be690b7a91 machine: get current: return early from loop if possible
No point iterating through the rest if we already got the current
machine.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-12 18:48:01 +01:00
Fiona Ebner
7d6a629269 machine: get current: make it clear that pve-version only exists for the current machine
by adding a comment and grouping the code better. See the PVE QEMU
patch "PVE: Allow version code in machine type" for reference. The way
the code was written previously made it look like a bug where
$pve_version might be overwritten multiple times.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-12 18:48:01 +01:00
Fiona Ebner
081eed3b79 machine: get current: improve naming and style
No functional change intended.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-12 18:48:01 +01:00
Thomas Lamprecht
c351659d87 add some comments for legacy 2MB OVMF image builds
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-11 15:09:42 +01:00
Alexandre Derumier
c2f4482053 migration: add missing eval on nbdstop with tunnel v2
It was already done in tunnel v1.

Avoid to avoid migration (and keep both source/targetvm locked) if
nbdstop error occur

2023-09-28 16:20:39 ERROR: error - tunnel command '{"cmd":"nbdstop"}' failed - failed to handle 'nbdstop' command - VM 140 qmp command 'nbd-server-stop' failed - got timeout
2023-09-28 16:20:39 ERROR: migration finished with problems (duration 00:01:42)

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-06 19:46:43 +01:00
Alexandre Derumier
6cb2338f53 nbd-stop: increase timeout to 25s
This can seemingly need a bit longer than expected, and better than
erroring out on migration is to wait a bit longer.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2023-11-06 19:45:55 +01:00
Thomas Lamprecht
1dcbfc4661 d/control: record break of with older ha-manager
As the ha-manager accessed rather internal details before that
version, and the memory property changing to a format-string with sub
properties in 7f8c808 ("add memory parser") breaks that access, so
ensure the installed ha-manager is using the newer
get_derived_property method to access that information cleanly.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-11-06 10:28:55 +01:00
Alexandre Derumier
5bb8815a3f add|del_bridge_fdb: remove unused firewall param 2023-10-25 13:02:45 +02:00
Alexandre Derumier
d797bb62c3 cpu hotplug: cannot change feature online
The vCPUs are passed as devices with specific id only when CPU
hot-plug is enable at cold start.

So, we can't enable/disable allow-hotplug online as then vCPU hotplug
API will thrown errors not finding core id.

Not enforcing this could also lead to migration failure, as the QEMU
command line for the target VM could be made different than the one it
was actually running with, causing a crash of the target as Fiona
observed [0].

[0]: https://lists.proxmox.com/pipermail/pve-devel/2023-October/059434.html

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
 [ TL: Reflowed & expanded commit message ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-10-24 11:46:52 +02:00
Fiona Ebner
b7bbeff3f9 vzdump: assemble: improve error messages
by including the errno. Might make it clearer what the issue is in
cases like: https://forum.proxmox.com/threads/135261/

Also add the missing newlines, the missing "to" in the second message,
switch to the more common "or die" and avoid line bloat while at it.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-10-23 17:09:41 +02:00
Filip Schauer
6f0627d4bd backup, migrate: fix races with suspended VMs that can wake up
Fix races with ACPI-suspended VMs which could wake up during migration
or during a suspend-mode backup.

Revert prevention, of ACPI-suspended VMs automatically resuming after
migration, introduced by 7ba974a6828d. The commit introduced a
potential problem that causes a suspended VM that wakes up during
migration to remain paused after the migration finishes.

This can be fixed once QEMU preserves the 'suspended' runstate during
migration (current patch on the qemu-devel list [0]) by checking for
the 'suspended' runstate on the target after migration.

Furthermore the commit increased the race window during the
preparation of a suspend-mode backup, when a suspended VM wakes up
between the vm_is_paused check in PVE::VZDump::QemuServer::prepare and
PVE::VZDump::QemuServer::qga_fs_freeze. This causes the code to skip
fs-freeze even if the VM has woken up, potentially leaving the file
system in an inconsistent state.

To prevent this, do not treat the suspended runstate as paused when
migrating or archiving a VM.

[0]: https://lists.nongnu.org/archive/html/qemu-devel/2023-08/msg05260.html

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
 [ TL: massage in Fiona's extra info into commit message ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-10-16 16:48:47 +02:00
Fiona Ebner
62c1904921 fix #4522: api: vncproxy: also set environment variable for ticket without websocket
Since commit 2dc0eb61 ("qm: assume correct VNC setup in 'vncproxy',
disallow passwordless"), 'qm vncproxy' will just fail when the
LC_PVE_TICKET environment variable is not set. Since it is not only
required in combination with websocket, drop that conditional.

For the non-serial case, this was the last remaining effect of the
'websocket' parameter, so update the parameter description.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-10-16 16:43:47 +02:00
Fiona Ebner
876d993886 api: vncproxy: update description of websocket parameter
Since commit 3e7567e0 ("do not use novnc wsproxy"), the websocket
upgrade is done via the HTTP server.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2023-10-16 16:43:47 +02:00
Thomas Lamprecht
263c803dd1 api: reduce overly lengthy comment
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-10-10 12:57:18 +02:00
Filip Schauer
7ba974a682 Fix ACPI-suspended VMs resuming after migration
Add checks for "suspended" and "prelaunch" runstates when checking
whether a VM is paused.

This fixes the following issues:
* ACPI-suspended VMs automatically resuming after migration
* Shutdown and reboot commands timing out instead of failing
  immediately on suspended VMs

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
2023-10-10 09:27:18 +02:00