mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-05-02 21:14:59 +00:00
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 <m.limbeck@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
96f00fd866
commit
9680b09d64
@ -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],
|
||||
|
Loading…
Reference in New Issue
Block a user