mirror of
git://git.proxmox.com/git/pve-storage.git
synced 2025-02-25 17:57:31 +03:00
fix #1611: implement import of base-images for LVM-thin Storage
for base images we call the volume_import of the parent plugin and pass it as vm-image instead of base-image, then convert it back as base-image Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
This commit is contained in:
parent
3e5f91823a
commit
f8a368c63c
@ -383,6 +383,56 @@ sub volume_has_feature {
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub volume_import {
|
||||
my ($class, $scfg, $storeid, $fh, $volname, $format, $snapshot, $base_snapshot, $with_snapshots, $allow_rename) = @_;
|
||||
|
||||
my ($vtype, $name, $vmid, $basename, $basevmid, $isBase, $file_format) =
|
||||
$class->parse_volname($volname);
|
||||
|
||||
if (!$isBase) {
|
||||
return $class->SUPER::volume_import(
|
||||
$scfg,
|
||||
$storeid,
|
||||
$fh,
|
||||
$volname,
|
||||
$format,
|
||||
$snapshot,
|
||||
$base_snapshot,
|
||||
$with_snapshots,
|
||||
$allow_rename
|
||||
);
|
||||
} else {
|
||||
my $tempname;
|
||||
my $vg = $scfg->{vgname};
|
||||
my $lvs = PVE::Storage::LVMPlugin::lvm_list_volumes($vg);
|
||||
if ($lvs->{$vg}->{$volname}) {
|
||||
die "volume $vg/$volname already exists\n" if !$allow_rename;
|
||||
warn "volume $vg/$volname already exists - importing with a different name\n";
|
||||
|
||||
$tempname = $class->find_free_diskname($storeid, $scfg, $vmid);
|
||||
} else {
|
||||
$tempname = $volname;
|
||||
$tempname =~ s/base/vm/;
|
||||
}
|
||||
|
||||
($storeid,my $newname) = PVE::Storage::parse_volume_id($class->SUPER::volume_import(
|
||||
$scfg,
|
||||
$storeid,
|
||||
$fh,
|
||||
$tempname,
|
||||
$format,
|
||||
$snapshot,
|
||||
$base_snapshot,
|
||||
$with_snapshots,
|
||||
$allow_rename
|
||||
));
|
||||
|
||||
$volname = $class->create_base($storeid, $scfg, $newname);
|
||||
}
|
||||
|
||||
return "$storeid:$volname";
|
||||
}
|
||||
|
||||
# used in LVMPlugin->volume_import
|
||||
sub volume_import_write {
|
||||
my ($class, $input_fh, $output_file) = @_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user