diff --git a/src/PVE/Storage/LVMPlugin.pm b/src/PVE/Storage/LVMPlugin.pm index 0e2c38c..6e77eb3 100644 --- a/src/PVE/Storage/LVMPlugin.pm +++ b/src/PVE/Storage/LVMPlugin.pm @@ -458,6 +458,14 @@ my sub get_snap_name { } } +my sub parse_snap_name { + my ($name) = @_; + + if ($name =~ m/^snap_\S+_(.*)\.qcow2$/) { + return $1; + } +} + sub filesystem_path { my ($class, $scfg, $volname, $snapname) = @_; @@ -773,11 +781,10 @@ sub volume_snapshot_info { my $get_snapname_from_path = sub { my ($volname, $path) = @_; - my $basepath = basename($path); - my $name = ($volname =~ s/\.[^.]+$//r); - if ($basepath =~ m/^snap_${name}_(.*)\.qcow2$/) { - return $1; - } elsif ($basepath eq $volname) { + my $name = basename($path); + if (my $snapname = parse_snap_name($name)) { + return $snapname; + } elsif ($name eq $volname) { return 'current'; } return undef; diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm index aafb13c..59ffa5e 100644 --- a/src/PVE/Storage/Plugin.pm +++ b/src/PVE/Storage/Plugin.pm @@ -779,6 +779,14 @@ my sub get_snap_name { return $name; } +my sub parse_snap_name { + my ($name) = @_; + + if ($name =~ m/^snap-(.*)-vm(.*)$/) { + return $1; + } +} + sub filesystem_path { my ($class, $scfg, $volname, $snapname) = @_; @@ -1728,10 +1736,11 @@ sub volume_snapshot_info { my $get_snapname_from_path = sub { my ($volname, $path) = @_; - my $basepath = basename($path); - if ($basepath =~ m/^snap-(.*)-vm(.*)$/) { - return $1; - } elsif ($basepath eq basename($volname)) { + my $name = basename($path); + + if (my $snapname = parse_snap_name($name)) { + return $snapname; + } elsif ($name eq basename($volname)) { return 'current'; } return undef;