[pve-devel] [PATCH qemu-server v3 1/2] migration: secure and use source volume names for deactivation

Fabian Grünbichler f.gruenbichler at proxmox.com
Tue Dec 19 12:37:32 CET 2023


On December 19, 2023 11:43 am, Hannes Duerr wrote:
> 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
> before the migration so that we can deactivate the original volumes
> afterwards.

we already do that though, no need for a new key in $self ;)

> 
> Signed-off-by: Hannes Duerr <h.duerr at proxmox.com>
> ---
>  PVE/QemuMigrate.pm | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
> index b87e47a..ec4710d 100644
> --- a/PVE/QemuMigrate.pm
> +++ b/PVE/QemuMigrate.pm
> @@ -744,6 +744,11 @@ sub phase1 {
>      $conf->{lock} = 'migrate';
>      PVE::QemuConfig->write_config($vmid, $conf);
>  
> +    PVE::QemuConfig->foreach_volume($conf, sub {
> +	my ($ds, $drive) = @_;
> +        push $self->{source_volumes}->@*, $drive->{file};
> +    });
> +
>      $self->scan_local_volumes($vmid);

scan_local_volumes already records the local volumes (and shared ones,
in case of remote migration), and any mappings.

>  
>      # fix disk sizes to match their actual size and write changes,
> @@ -1586,8 +1591,7 @@ sub phase3_cleanup {
>  
>      # always deactivate volumes - avoid lvm LVs to be active on several nodes
>      eval {
> -	my $vollist = PVE::QemuServer::get_vm_volumes($conf);
> -	PVE::Storage::deactivate_volumes($self->{storecfg}, $vollist);
> +	PVE::Storage::deactivate_volumes($self->{storecfg}, $self->{source_volumes});

one way to approach this here would be to re-use the information from
$self->{volume_map} and do a reverse lookup per volid. even easier
though would be to just get the vollist higher up in this sub, since the
local mapping takes place here as well, and we just need to call
get_vm_volumes with $conf before the volume_map replacements.

>      };
>      if (my $err = $@) {
>  	$self->log('err', $err);
> -- 
> 2.39.2
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 




More information about the pve-devel mailing list