From 9680b09d646bb0fe59fdcc6b3891f812b084aa61 Mon Sep 17 00:00:00 2001 From: Mira Limbeck Date: Wed, 15 May 2019 12:53:24 +0200 Subject: [PATCH] fix existing cloudinit volume not available for file_size_info file_size_info can't find the file if it is not available, e.g., RBD storage with KRBD or LVM where the volume was not yet activated, returns then 0, which we interpret as the disk not existing, thus call vdisk_alloc which errors as the disk, in fact, really already exists. With this patch we call activate_volume before trying file_size_info, so if the volume exists we get it available and else we can really create it. If the disk does not exist and is created with vdisk_alloc we still require an additional call to activate_volume for the new disk. Signed-off-by: Mira Limbeck Signed-off-by: Thomas Lamprecht --- PVE/QemuServer/Cloudinit.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm index f46f7fd..fbd71ec 100644 --- a/PVE/QemuServer/Cloudinit.pm +++ b/PVE/QemuServer/Cloudinit.pm @@ -32,6 +32,10 @@ sub commit_cloudinit_disk { my $scfg = PVE::Storage::storage_config($storecfg, $storeid); my $format = PVE::QemuServer::qemu_img_format($scfg, $volname); + # required before file_size_info for ceph + krbd as it gets mapped too late otherwise + my $plugin = PVE::Storage::Plugin->lookup($scfg->{type}); + eval { $plugin->activate_volume($storeid, $scfg, $volname) }; + my $size = eval { PVE::Storage::file_size_info($iso_path) }; if ($size <= 0) { $volname =~ m/(vm-$vmid-cloudinit(.\Q$format\E)?)/; @@ -39,10 +43,9 @@ sub commit_cloudinit_disk { $size = 4 * 1024; PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $format, $name, $size); $size *= 1024; # vdisk alloc takes KB, qemu-img dd's osize takes byte + $plugin->activate_volume($storeid, $scfg, $volname); } - my $plugin = PVE::Storage::Plugin->lookup($scfg->{type}); - $plugin->activate_volume($storeid, $scfg, $volname); eval { run_command([['genisoimage', '-R', '-V', $label, $path], -- 2.39.2