When doing an online migration with --targetstorage unused disks get migrated
to the specified target storage as well.
With this patch we keep track of those volumes and update the VM config with
their new locations. Unused volumes of the VM previously not present in the
config are added as well.

Signed-off-by: Fabian Ebner <f.eb...@proxmox.com>
---

Changes from v1:
    * Check explicitly if it is an online migration and that the volume
      is referenced by the storage rather than something else
    * Patch 3 fixes another typo

 PVE/QemuMigrate.pm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index 626b837..045f3b0 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -465,6 +465,12 @@ sub sync_disks {
            } else {
                next if $rep_volumes->{$volid};
                push @{$self->{volumes}}, $volid;
+
+               if (defined($override_targetsid) && $self->{running} && $ref eq 
'storage') {
+                   my (undef, $targetvolname) = 
PVE::Storage::parse_volume_id($volid);
+                   push @{$self->{online_unused_volumes}}, 
"${targetsid}:${targetvolname}";
+               }
+
                my $opts = $self->{opts};
                my $insecure = $opts->{migration_type} eq 'insecure';
                my $with_snapshots = $local_volumes->{$volid}->{snapshots};
@@ -958,6 +964,16 @@ sub phase3_cleanup {
        }
     }
 
+    if ($self->{online_unused_volumes}) {
+       foreach my $conf_key (keys %{$conf}) {
+           delete $conf->{$conf_key} if ($conf_key =~ m/^unused\d+$/);
+       }
+       foreach my $targetvolid (@{$self->{online_unused_volumes}}) {
+           PVE::QemuConfig->add_unused_volume($conf, $targetvolid);
+       }
+       PVE::QemuConfig->write_config($vmid, $conf);
+    }
+
     # transfer replication state before move config
     $self->transfer_replication_state() if $self->{replicated_volumes};
 
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to