From 1dab17545c51e23f17d0ad080f51fde733c77cc8 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Wed, 16 Jul 2025 08:31:50 +0200 Subject: [PATCH] plugin: lvmplugin: add parse_snap_name Signed-off-by: Alexandre Derumier --- src/PVE/Storage/LVMPlugin.pm | 17 ++++++++++++----- src/PVE/Storage/Plugin.pm | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) 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;