Signed-off-by: Wolfgang Bumiller <w.bumil...@proxmox.com> --- src/PVE/Storage/ZFSPoolPlugin.pm | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/src/PVE/Storage/ZFSPoolPlugin.pm b/src/PVE/Storage/ZFSPoolPlugin.pm index 2cae090..83cb9fb 100644 --- a/src/PVE/Storage/ZFSPoolPlugin.pm +++ b/src/PVE/Storage/ZFSPoolPlugin.pm @@ -123,7 +123,15 @@ sub zfs_parse_zvol_list { return $list; } -my sub image_vtype_from_name : prototype($) { +my sub volname_is_subvol : prototype($) { + my ($volname) = @_; + return 1 if $volname =~ /^(?:base-)?subvol-ct-/; + return 1 if $volname =~ /^subvol-/; + return 1 if $volname =~ /^basevol-/; + return 0; +} + +my sub volume_type_from_name : prototype($) { my ($name) = @_; return 'ct-vol' if $name =~ /^(base-)?subvol(-ct)?-/; @@ -194,16 +202,15 @@ sub path { my $path = ''; my $mountpoint = $scfg->{mountpoint} // "/$scfg->{pool}"; - if ($vtype eq "images") { - if ($name =~ m/^subvol-/ || $name =~ m/^basevol-/) { - $path = "$mountpoint/$name"; - } else { - $path = "/dev/zvol/$scfg->{pool}/$name"; - } - $path .= "\@$snapname" if defined($snapname); + die "$vtype is not allowed in ZFSPool!" + if $vtype ne 'vm-vol' && $vtype ne 'ct-vol' && $vtype ne 'images'; + + if (volname_is_subvol($name)) { + $path = "$mountpoint/$name"; } else { - die "$vtype is not allowed in ZFSPool!"; + $path = "/dev/zvol/$scfg->{pool}/$name"; } + $path .= "\@$snapname" if defined($snapname); return ($path, $vmid, $vtype); } -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel