[pve-devel] [PATCH] migration : enable mtunnel for insecure migration

Alexandre DERUMIER aderumier at odiso.com
Mon Aug 21 07:35:20 CEST 2017


Thanks for the review Thomas,
I'll work on it this week.


----- Mail original -----
De: "Thomas Lamprecht" <t.lamprecht at proxmox.com>
À: "pve-devel" <pve-devel at pve.proxmox.com>, "aderumier" <aderumier at odiso.com>
Envoyé: Jeudi 17 Août 2017 11:56:08
Objet: Re: [pve-devel] [PATCH] migration : enable mtunnel for insecure migration

the base idea is good, IMO, some comments in line, 

On 08/10/2017 09:15 AM, Alexandre Derumier wrote: 
> We only use it to send commands faster like resume 
> 
> Signed-off-by: Alexandre Derumier <aderumier at odiso.com> 
> --- 
> PVE/QemuMigrate.pm | 8 ++++++++ 
> 1 file changed, 8 insertions(+) 
> 
> diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm 
> index fc847cc..8271adf 100644 
> --- a/PVE/QemuMigrate.pm 
> +++ b/PVE/QemuMigrate.pm 
> @@ -635,6 +635,14 @@ sub phase2 { 
> } else { 
> die "unsupported protocol in migration URI: $ruri\n"; 
> } 
> + } else { 
> + #fork tunnel for insecure migration, to send faster commands like resume 
> + $self->log('info', "start remote tunnel"); 

I'd rather move the log line from the if (secure) branch out so that we 
have this line only once. 

> + my $pfamily = PVE::Tools::get_host_address_family($nodename); 
> + my $lport = PVE::Tools::next_migrate_port($pfamily); 
> + my $tunnel_addr = "$lport:localhost:$rport"; 
> + 

I would omit those three lines above, its not needed for the insecure 
case, the $tunnel_addr parameter from fork tunnel is optional. 

> + $self->{tunnel} = $self->fork_tunnel($tunnel_addr); 

use: 

$self->{tunnel} = $self->fork_tunnel(); 

instead. 

> } 
> 
> my $start = time(); 
> 

I.e., a minified (slightly tested) version of your patch could be: 

------8<------ 

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm 
index fc847cc..7f39138 100644 
--- a/PVE/QemuMigrate.pm 
+++ b/PVE/QemuMigrate.pm 
@@ -601,9 +601,9 @@ sub phase2 { 

die "unable to detect remote migration address\n" if !$raddr; 

- if ($migration_type eq 'secure') { 
- $self->log('info', "start remote tunnel"); 
+ $self->log('info', "start remote tunnel"); 

+ if ($migration_type eq 'secure') { 
if ($ruri =~ /^unix:/) { 
unlink $raddr; 
$self->{tunnel} = $self->fork_tunnel("$raddr:$raddr"); 
@@ -635,6 +635,9 @@ sub phase2 { 
} else { 
die "unsupported protocol in migration URI: $ruri\n"; 
} 
+ } else { 
+ # use mtunnel to send commands without the ssh/perl startup delay 
+ $self->{tunnel} = $self->fork_tunnel(); 
} 

my $start = time(); 


------>8------ 




More information about the pve-devel mailing list