[pve-devel] [PATCH qemu-server] fix #2100: skip local cloudinit image on offline migrate
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Feb 27 16:07:40 CET 2019
On 2/27/19 9:52 AM, Mira Limbeck wrote:
> check for cdrom and 'vm-<id>-cloudinit' to see if a cloudinit drive is
> configured and delete it from local_volumes so it isn't copied.
>
> Signed-off-by: Mira Limbeck <m.limbeck at proxmox.com>
> ---
> PVE/QemuMigrate.pm | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
> index ee605d8..aedc40f 100644
> --- a/PVE/QemuMigrate.pm
> +++ b/PVE/QemuMigrate.pm
> @@ -353,6 +353,7 @@ sub sync_disks {
>
> $local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
>
> + return if ($attr->{cdrom} && ($volid =~ /vm-\d+-cloudinit/));
about 20 lines above in the same closure we have already a:
if ($attr->{cdrom}) {
....
}
block, so we could put it there?
> die "local cdrom image\n" if $attr->{cdrom};
>
> my ($path, $owner) = PVE::Storage::path($self->{storecfg}, $volid);
> @@ -384,6 +385,13 @@ sub sync_disks {
> }
> });
>
> + foreach my $vol (keys %$local_volumes) {
> + if ($vol =~ /vm-\d+-cloudinit/) {
> + delete $local_volumes->{$vol};
> + }
> + }
hmm, feels a bit like doing extra work. We already cycle through them all and
know which key is one above, so we could either delete it there directly from
$local_volumes, or if that makes and issue with the outer foreach_volid loop
we could just write a "ignore" or "generated" or "skip" information into the
hash value, to make it a bit more explicit? E.g., switch it's "ref" key from
storage to "generated" or therlike?
> +
> foreach my $vol (sort keys %$local_volumes) {
> my $ref = $local_volumes->{$vol}->{ref};
> if ($ref eq 'storage') {
>
More information about the pve-devel
mailing list