[pve-devel] applied: [PATCH qemu-server] migrate: don't accidentally take NBD code paths

Thomas Lamprecht t.lamprecht at proxmox.com
Mon May 4 17:54:04 CEST 2020


On 4/30/20 9:35 AM, Fabian Grünbichler wrote:
> by avoiding auto-vivification of $self->{online_local_volumes} via
> iteration. most code paths don't care whether it's undef or a reference
> to an empty list, but this caused the (already) fixed bug of calling
> nbd_stop without having started an NBD server in the first place.
> 
> Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
> ---
> This technically makes the previous NBD stop related patches no longer
> needed - but let's keep them until we clean up the whole volume handling
> properly to avoid falling into this trap again.
> 
>  PVE/QemuMigrate.pm | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
> index 7644922..d9b104c 100644
> --- a/PVE/QemuMigrate.pm
> +++ b/PVE/QemuMigrate.pm
> @@ -713,10 +713,14 @@ sub phase2 {
>      $input .= "nbd_protocol_version: $nbd_protocol_version\n";
>  
>      my $number_of_online_replicated_volumes = 0;
> -    foreach my $volid (@{$self->{online_local_volumes}}) {
> -	next if !$self->{replicated_volumes}->{$volid};
> -	$number_of_online_replicated_volumes++;
> -	$input .= "replicated_volume: $volid\n";
> +
> +    # prevent auto-vivification
> +    if ($self->{online_local_volumes}) {
> +	foreach my $volid (@{$self->{online_local_volumes}}) {
> +	    next if !$self->{replicated_volumes}->{$volid};
> +	    $number_of_online_replicated_volumes++;
> +	    $input .= "replicated_volume: $volid\n";
> +	}
>      }
>  
>      my $target_replicated_volumes = {};
> 

applied





More information about the pve-devel mailing list