From a4771895759edb1f000ccc105b3c1b32b6c4f644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Thu, 31 Jul 2025 13:15:16 +0200 Subject: [PATCH] plugin: fix parse_name_dir regression for custom volume names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prior to the introduction of snapshot as volume chains, volume names of almost arbitrary form were accepted. only forbid filenames which are part of the newly introduced namespace for snapshot files, while deprecating other names not following our usual naming scheme, instead of forbidding them outright. Fixes: b63147f5dfd62e398cc206d2f7086d5db38b3c9b "plugin: fix volname parsing" Co-authored-by: Shannon Sterz Signed-off-by: Fabian Grünbichler Tested-by: Shannon Sterz Link: https://lore.proxmox.com/20250731111519.931104-2-f.gruenbichler@proxmox.com --- src/PVE/Storage/Plugin.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm index 2b5a016..c08f5a5 100644 --- a/src/PVE/Storage/Plugin.pm +++ b/src/PVE/Storage/Plugin.pm @@ -715,8 +715,11 @@ sub parse_name_dir { if ($name =~ m!^((vm-|base-|subvol-)(\d+)-[^/\s]+\.(raw|qcow2|vmdk|subvol))$!) { my $isbase = $2 eq 'base-' ? $2 : undef; return ($1, $4, $isbase); # (name, format, isBase) + } elsif (parse_snap_name($name)) { + die "'$name' is a snapshot filename, not a volume!\n"; } elsif ($name =~ m!^((base-)?[^/\s]+\.(raw|qcow2|vmdk|subvol))$!) { - warn "this volume name `$name` is not supported anymore\n" if !parse_snap_name($name); + warn "this volume name `$name` is deprecated, please use (base-/vm-/subvol-)-NNN- as prefix\n"; + return ($1, $3, $2); # (name ,format, isBase) } die "unable to parse volume filename '$name'\n";