[pve-devel] [PATCH container 1/3] collect and log origin of found local volumes

Fabian Grünbichler f.gruenbichler at proxmox.com
Thu Jul 7 16:45:25 CEST 2016


just knowing that local disks prevent a migration is not
very helpful, so be a bit more verbose here.
---
 src/PVE/LXC/Migrate.pm | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/PVE/LXC/Migrate.pm b/src/PVE/LXC/Migrate.pm
index fbcb8c7..185be07 100644
--- a/src/PVE/LXC/Migrate.pm
+++ b/src/PVE/LXC/Migrate.pm
@@ -100,7 +100,7 @@ sub phase1 {
     }
 
     $self->{volumes} = []; # list of already migrated volumes
-    my $volhash = {}; # 1 for local volumes
+    my $volhash = {}; # 'config', 'snapshot' or 'storage' for local volumes
 
     my $test_volid = sub {
 	my ($volid, $snapname) = @_;
@@ -115,6 +115,8 @@ sub phase1 {
 
 	return if $scfg->{shared};
 
+	$volhash->{$volid} = defined($snapname) ? 'snapshot' : 'config';
+
 	my ($path, $owner) = PVE::Storage::path($self->{storecfg}, $volid);
 
 	die "can't migrate volume '$volid' - owned by other guest (owner = $owner)\n"
@@ -124,12 +126,9 @@ sub phase1 {
 	    # we cannot migrate shapshots on local storage
 	    # exceptions: 'zfspool'
 	    if (($scfg->{type} eq 'zfspool')) {
-		$volhash->{$volid} = 1;
 		return;
 	    }
 	    die "can't migrate snapshot of local volume '$volid'\n";
-	} else {
-	    $volhash->{$volid} = 1;
 	}
     };
 
@@ -151,7 +150,6 @@ sub phase1 {
 	if (!$scfg->{shared}) {
 	    $self->log('info', "copy mountpoint '$ms' ($volid) to node ' $self->{node}'")
 		if !$snapname;
-	    $volhash->{$volid} = 1;
 	} else {
 	    $self->log('info', "mountpoint '$ms' is on shared storage '$storage'")
 		if !$snapname;
@@ -189,7 +187,7 @@ sub phase1 {
 
 	    $self->log('info', "copy volume '$volid' to node '$self->{node}'")
 		if !$volhash->{$volid};
-	    $volhash->{$volid} = 1;
+	    $volhash->{$volid} = 'storage' if !defined($volhash->{$volid});
 	});
     }
 
@@ -210,6 +208,18 @@ sub phase1 {
 	}
     }
 
+    foreach my $volid (sort keys %$volhash) {
+	if ($volhash->{$volid} eq 'storage') {
+	    $self->log('info', "found local volume '$volid' (via storage)\n");
+	} elsif ($volhash->{$volid} eq 'config') {
+	    $self->log('info', "found local volume '$volid' (in current VM config)\n");
+	} elsif ($volhash->{$volid} eq 'snapshot') {
+	    $self->log('info', "found local volume '$volid' (referenced by snapshot(s))\n");
+	} else {
+	    $self->log('info', "found local volume '$volid'\n");
+	}
+    }
+
     foreach my $volid (keys %$volhash) {
 	my ($sid, $volname) = PVE::Storage::parse_volume_id($volid);
 	push @{$self->{volumes}}, $volid;
-- 
2.1.4





More information about the pve-devel mailing list