refactor finding next diskname for all plugins
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
committed by
Thomas Lamprecht
parent
59fa9fd6a3
commit
c4a29df483
@ -569,23 +569,16 @@ sub get_next_vm_diskname {
|
||||
}
|
||||
|
||||
my $find_free_diskname = sub {
|
||||
my ($imgdir, $vmid, $fmt) = @_;
|
||||
my ($imgdir, $vmid, $fmt, $scfg) = @_;
|
||||
|
||||
my $disk_ids = {};
|
||||
PVE::Tools::dir_glob_foreach($imgdir,
|
||||
qr!(vm|base)-$vmid-disk-(\d+)\..*!,
|
||||
sub {
|
||||
my ($fn, $type, $disk) = @_;
|
||||
$disk_ids->{$disk} = 1;
|
||||
});
|
||||
my $disk_list = [];
|
||||
|
||||
for (my $i = 1; $i < 100; $i++) {
|
||||
if (!$disk_ids->{$i}) {
|
||||
return "vm-$vmid-disk-$i.$fmt";
|
||||
}
|
||||
if (defined(my $dh = IO::Dir->new($imgdir))) {
|
||||
@$disk_list = $dh->read();
|
||||
$dh->close();
|
||||
}
|
||||
|
||||
die "unable to allocate a new image name for VM $vmid in '$imgdir'\n";
|
||||
return get_next_vm_diskname($disk_list, $imgdir, $vmid, $fmt, $scfg, 1);
|
||||
};
|
||||
|
||||
sub clone_image {
|
||||
@ -610,7 +603,7 @@ sub clone_image {
|
||||
|
||||
mkpath $imagedir;
|
||||
|
||||
my $name = &$find_free_diskname($imagedir, $vmid, "qcow2");
|
||||
my $name = $find_free_diskname->($imagedir, $vmid, "qcow2", $scfg);
|
||||
|
||||
warn "clone $volname: $vtype, $name, $vmid to $name (base=../$basevmid/$basename)\n";
|
||||
|
||||
@ -642,7 +635,7 @@ sub alloc_image {
|
||||
|
||||
mkpath $imagedir;
|
||||
|
||||
$name = &$find_free_diskname($imagedir, $vmid, $fmt) if !$name;
|
||||
$name = $find_free_diskname->($imagedir, $vmid, $fmt, $scfg) if !$name;
|
||||
|
||||
my (undef, $tmpfmt) = parse_name_dir($name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user