From ad27ee3e4a04c350b4c8fe6290387b0b0cb11ccb Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Thu, 31 Jan 2013 08:42:26 +0100 Subject: [PATCH] new method volume_is_base() to check if volume is a base volume --- PVE/Storage.pm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/PVE/Storage.pm b/PVE/Storage.pm index 78a14f9..9bb8185 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -268,6 +268,27 @@ sub parse_volume_id { 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 sub path_to_volume_id { my ($cfg, $path) = @_;