[pve-devel] [PATCH qemu-server 1/4] parse nbd_protocol_version if available
Mira Limbeck
m.limbeck at proxmox.com
Wed Mar 11 11:44:17 CET 2020
For secure live migration with local disks via NBD over a unix socket,
we have to somehow communicate support for it from the source node to the
target node. This is because there can only be one NBD server with either a TCP
or Unix socket bound, not both.
The source node passes that information via STDIN after the spice
ticket followed by a newline for backwards compatibility. If there is no
spice ticket we just pass the newline followed by the
'nbd_protocol_version: <version>' line.
For unix socket support we parse the line 'nbd_protocol_version:
<version>'. A version >= 1 means unix socket support. We use a fallback
to 0 should there be no line containing that pattern which is the case
if the source node has an older qemu-server version.
Signed-off-by: Mira Limbeck <m.limbeck at proxmox.com>
---
PVE/API2/Qemu.pm | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 3b61334..8891db9 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -2035,10 +2035,17 @@ __PACKAGE__->register_method({
# read spice ticket from STDIN
my $spice_ticket;
+ my $nbd_protocol_version = 0;
if ($stateuri && ($stateuri eq 'tcp' || $stateuri eq 'unix') && $migratedfrom && ($rpcenv->{type} eq 'cli')) {
if (defined(my $line = <STDIN>)) {
chomp $line;
$spice_ticket = $line;
+ while (defined(my $line = <STDIN>)) {
+ chomp $line;
+ if ($line =~ m/^nbd_protocol_version: (\d+)$/) {
+ $nbd_protocol_version = $1;
+ }
+ }
}
}
@@ -2067,7 +2074,8 @@ __PACKAGE__->register_method({
syslog('info', "start VM $vmid: $upid\n");
PVE::QemuServer::vm_start($storecfg, $vmid, $stateuri, $skiplock, $migratedfrom, undef, $machine,
- $spice_ticket, $migration_network, $migration_type, $targetstorage, $timeout);
+ $spice_ticket, $migration_network, $migration_type, $targetstorage, $timeout,
+ $nbd_protocol_version);
return;
};
--
2.20.1
More information about the pve-devel
mailing list