Re: [pve-devel] [PATCH storage 22/26] zfs: update 'path' method for new naming scheme

Fabian Grünbichler
2025-07-30T09:30:56Z

On July 29, 2025 1:15 pm, Wolfgang Bumiller wrote:
> Signed-off-by: Wolfgang Bumiller <w.bumiller@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';

should use the volume_is_vdisk (currently is_volume_type) helper

> +
> + 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
>
>
>