new method volume_is_base() to check if volume is a base volume
This commit is contained in:
@ -268,6 +268,27 @@ sub parse_volume_id {
|
|||||||
die "unable to parse volume ID '$volid'\n";
|
die "unable to parse volume ID '$volid'\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_is_base {
|
||||||
|
my ($cfg, $volid) = @_;
|
||||||
|
|
||||||
|
my ($sid, $volname) = parse_volume_id($volid, 1);
|
||||||
|
return 0 if !$sid;
|
||||||
|
|
||||||
|
if (my $scfg = $cfg->{ids}->{$sid}) {
|
||||||
|
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||||
|
my ($vtype, $name, $vmid, $basename, $basevmid, $isBase) =
|
||||||
|
$plugin->parse_volname($volname);
|
||||||
|
return $isBase ? 1 : 0;
|
||||||
|
} else {
|
||||||
|
# stale volid with undefined storage - so we can just guess
|
||||||
|
if ($volid =~ m/base-/) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
# try to map a filesystem path to a volume identifier
|
# try to map a filesystem path to a volume identifier
|
||||||
sub path_to_volume_id {
|
sub path_to_volume_id {
|
||||||
my ($cfg, $path) = @_;
|
my ($cfg, $path) = @_;
|
||||||
|
|||||||
Reference in New Issue
Block a user