Re: [pve-devel] [PATCH storage 25/26] update tests

Max R. Carrara
2025-07-29T16:32:15Z

On Tue Jul 29, 2025 at 1:15 PM CEST, Wolfgang Bumiller wrote:
> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
> ---

There are a couple tests for LVM and ZFS that seem to fail; relevant
logs are below.

I've also added some comments inline further below where possible.

==========

./run_test_zfspoolplugin.pl
pool: test-pool
state: ONLINE
status: Some supported and requested features are not enabled on the pool.
The pool can still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
config:

NAME STATE READ WRITE CKSUM
test-pool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 ONLINE 0 0 0
scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 ONLINE 0 0 0

errors: No known data errors
Start tests for ZFSPoolPlugin

run test1 "volume_size_info"

run test2 "volume_resize"

run test3 "volume_has_feature"

run test4 "volume_snapshot"

run test5 "volume_snapshot_delete"
######Ignore Output if no Test5 g: is included######
cannot destroy 'regressiontest/base-100-disk-1@__base__': snapshot has dependent clones
use '-R' to destroy the following datasets:
######End Ignore#######

run test6 "volume_rollback_is_possible"

run test7 "volume_rollback"

run test8 "parse_volname"
Test8 a: parsing wrong at ./run_test_zfspoolplugin.pl line 1044.
Test8 b: parsing wrong at ./run_test_zfspoolplugin.pl line 1067.
Test8 c: parsing wrong at ./run_test_zfspoolplugin.pl line 1089.
Test8 d: parsing wrong at ./run_test_zfspoolplugin.pl line 1111.
Test8 e: parsing wrong at ./run_test_zfspoolplugin.pl line 1133.
Test8 f: parsing wrong at ./run_test_zfspoolplugin.pl line 1155.

run test9 "parse_volume_id"

run test10 "volume_is_base"
Use of uninitialized value in numeric eq (==) at ./run_test_zfspoolplugin.pl line 863.
Argument "base" isn't numeric in numeric eq (==) at ./run_test_zfspoolplugin.pl line 875.
Test10 b: is base at ./run_test_zfspoolplugin.pl line 877.
Use of uninitialized value in numeric eq (==) at ./run_test_zfspoolplugin.pl line 887.
Use of uninitialized value in numeric eq (==) at ./run_test_zfspoolplugin.pl line 899.
Argument "basevol" isn't numeric in numeric eq (==) at ./run_test_zfspoolplugin.pl line 911.
Test10 e: is base at ./run_test_zfspoolplugin.pl line 913.
Use of uninitialized value in numeric eq (==) at ./run_test_zfspoolplugin.pl line 923.

run test11 "volume_is_base"
Test11 b at ./run_test_zfspoolplugin.pl line 795.
cannot open 'regressiontest/vm-110-disk-0': dataset does not exist
Test11 b: command 'zfs list -H -o volsize regressiontest/vm-110-disk-0' failed: exit code 1
Test11 e at ./run_test_zfspoolplugin.pl line 831.
cannot open 'regressiontest/subvol-210-disk-0': dataset does not exist
Test11 e: command 'zfs list -H -o refquota regressiontest/subvol-210-disk-0' failed: exit code 1

run test12 "vdisk_create_base"

run test13 "vdisk_alloc"
Test13 a: vdisk_alloc without vtype not allowed anymore
Test13 b: volname:zfstank99:vol-vm-112-disk-0 don't match
Test13 c: vdisk_alloc without vtype not allowed anymore
Test13 d: volname:zfstank99:subvol-ct-113-disk-0 don't match

run test14 "vdisk_free"

run test15 "template_list and vdisk_list"
Test 15 d failed
Test 15 g failed
Test 15 h failed
Test 15 i failed

run test16 "activate_storage"

run test17 "deactivate_storage"

run test18 "scan_zfs"

run test19 "path"
Test 19 a: owner is not correct: expected 'images' get 'vm-vol' at ./run_test_zfspoolplugin.pl line 77.
Test 19 b: owner is not correct: expected 'images' get 'vm-vol' at ./run_test_zfspoolplugin.pl line 107.
Test 19 c: owner is not correct: expected 'images' get 'vm-vol' at ./run_test_zfspoolplugin.pl line 137.
Test 19 d: owner is not correct: expected 'images' get 'ct-vol' at ./run_test_zfspoolplugin.pl line 167.
Test 19 e: owner is not correct: expected 'images' get 'ct-vol' at ./run_test_zfspoolplugin.pl line 197.
Test 19 f: owner is not correct: expected 'images' get 'ct-vol' at ./run_test_zfspoolplugin.pl line 227.
Stop tests for ZFSPoolPlugin
26 tests failed
Time: 14s

==========

./run_test_lvmplugin.pl
Start tests for LVMPlugin
8000+0 records in
8000+0 records out
8388608000 bytes (8.4 GB, 7.8 GiB) copied, 4.04047 s, 2.1 GB/s
Physical volume "/dev/loop1" successfully created.
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test1 "volume_size_info"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test2 "volume_resize"
Size of logical volume regressiontest/vm-102-disk-1 changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
Logical volume regressiontest/vm-102-disk-1 successfully resized.
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test3 "volume_has_feature"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test4 "volume_rollback_is_possible"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test5 "parse_volname"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test6 "parse_volume_id"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test7 "vdisk_alloc"
Test7 a: vdisk_alloc without vtype not allowed anymore
Logical volume "vol-vm-112-disk-0" created.
Test7 b: volname:lvmregression:vol-vm-112-disk-0 don't match
Logical volume "vm-102-disk-1" successfully removed.
Logical volume "vol-vm-112-disk-0" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test8 "vdisk_free"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test15 "template_list and vdisk_list"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test10 "activate_storage"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test11 "deactivate_storage"
0 logical volume(s) in volume group "regressiontest" now active
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Volume group "regressiontest" successfully created
Logical volume "vm-102-disk-1" created.

run test12 "path"
Logical volume "vm-102-disk-1" successfully removed.
Volume group "regressiontest" successfully removed
Labels on physical volume "/dev/loop1" successfully wiped.
Stop tests for LVMPlugin
2 tests failed
Time: 11s

==========

> src/test/list_volumes_test.pm | 73 ++++++++++++++++++++----------
> src/test/parse_volname_test.pm | 34 ++++++++++++--
> src/test/path_to_volume_id_test.pm | 27 +++++++----
> src/test/run_test_lvmplugin.pl | 11 +++--
> src/test/run_test_zfspoolplugin.pl | 45 ++++++++++--------
> 5 files changed, 129 insertions(+), 61 deletions(-)
>
> diff --git a/src/test/list_volumes_test.pm b/src/test/list_volumes_test.pm
> index e528fc3..fcc7beb 100644
> --- a/src/test/list_volumes_test.pm
> +++ b/src/test/list_volumes_test.pm
> @@ -71,6 +71,8 @@ my $scfg = {
> 'rootdir' => 1,
> 'vztmpl' => 1,
> 'images' => 1,
> + 'vm-vol' => 1,
> + 'ct-vol' => 1,
> 'snippets' => 1,
> 'backup' => 1,
> },
> @@ -87,9 +89,9 @@ my @tests = (
> description => 'VMID: 16110, VM, qcow2, backup, snippets',
> vmid => '16110',
> files => [
> - "$storage_dir/images/16110/vm-16110-disk-0.qcow2",
> - "$storage_dir/images/16110/vm-16110-disk-1.raw",
> - "$storage_dir/images/16110/vm-16110-disk-2.vmdk",
> + "$storage_dir/vms/16110/vol-vm-16110-disk-0.qcow2",
> + "$storage_dir/vms/16110/vol-vm-16110-disk-1.raw",
> + "$storage_dir/vms/16110/vol-vm-16110-disk-2.vmdk",
> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_11_40.vma.gz",
> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_12_45.vma.lzo",
> "$storage_dir/dump/vzdump-qemu-16110-2020_03_30-21_13_55.vma",
> @@ -99,34 +101,37 @@ my @tests = (
> ],
> expected => [
> {
> - 'content' => 'images',
> + 'content' => 'vm-vol',
> + 'vtype' => 'vm-vol',
> 'ctime' => DEFAULT_CTIME,
> 'format' => 'qcow2',
> 'parent' => undef,
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '16110',
> - 'volid' => 'local:16110/vm-16110-disk-0.qcow2',
> + 'volid' => 'local:16110/vol-vm-16110-disk-0.qcow2',
> },
> {
> - 'content' => 'images',
> + 'content' => 'vm-vol',
> + 'vtype' => 'vm-vol',
> 'ctime' => DEFAULT_CTIME,
> 'format' => 'raw',
> 'parent' => undef,
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '16110',
> - 'volid' => 'local:16110/vm-16110-disk-1.raw',
> + 'volid' => 'local:16110/vol-vm-16110-disk-1.raw',
> },
> {
> - 'content' => 'images',
> + 'content' => 'vm-vol',
> + 'vtype' => 'vm-vol',
> 'ctime' => DEFAULT_CTIME,
> 'format' => 'vmdk',
> 'parent' => undef,
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '16110',
> - 'volid' => 'local:16110/vm-16110-disk-2.vmdk',
> + 'volid' => 'local:16110/vol-vm-16110-disk-2.vmdk',
> },
> {
> 'content' => 'backup',
> @@ -184,7 +189,8 @@ my @tests = (
> description => 'VMID: 16112, lxc, raw, backup',
> vmid => '16112',
> files => [
> - "$storage_dir/images/16112/vm-16112-disk-0.raw",
> + "$storage_dir/cts/16112/vol-ct-16112-disk-0.raw",
> + "$storage_dir/images/16112/vm-16112-disk-1.raw",
> "$storage_dir/dump/vzdump-lxc-16112-2020_03_30-21_39_30.tar.lzo",
> "$storage_dir/dump/vzdump-lxc-16112-2020_03_30-21_49_30.tar.gz",
> "$storage_dir/dump/vzdump-lxc-16112-2020_03_30-21_49_30.tar.zst",
> @@ -192,6 +198,17 @@ my @tests = (
> "$storage_dir/dump/vzdump-openvz-16112-2020_03_30-21_39_30.tar.bz2",
> ],
> expected => [
> + {
> + 'content' => 'ct-vol',
> + 'vtype' => 'ct-vol',
> + 'ctime' => DEFAULT_CTIME,
> + 'format' => 'raw',
> + 'parent' => undef,
> + 'size' => DEFAULT_SIZE,
> + 'used' => DEFAULT_USED,
> + 'vmid' => '16112',
> + 'volid' => 'local:16112/vol-ct-16112-disk-0.raw',
> + },
> {
> 'content' => 'rootdir',
> 'ctime' => DEFAULT_CTIME,
> @@ -200,7 +217,7 @@ my @tests = (
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '16112',
> - 'volid' => 'local:16112/vm-16112-disk-0.raw',
> + 'volid' => 'local:16112/vm-16112-disk-1.raw',
> },
> {
> 'content' => 'backup',
> @@ -254,7 +271,7 @@ my @tests = (
> vmid => '16114',
> files => [
> "$storage_dir/images/16114/vm-16114-disk-0.qcow2",
> - "$storage_dir/images/16114/vm-16114-disk-1.qcow2",
> + "$storage_dir/vms/16114/vol-vm-16114-disk-1.qcow2",
> ],
> parent => [
> "../9004/base-9004-disk-0.qcow2", "../9004/base-9004-disk-1.qcow2",
> @@ -271,14 +288,15 @@ my @tests = (
> 'volid' => 'local:9004/base-9004-disk-0.qcow2/16114/vm-16114-disk-0.qcow2',
> },
> {
> - 'content' => 'images',
> + 'content' => 'vm-vol',
> + 'vtype' => 'vm-vol',
> 'ctime' => DEFAULT_CTIME,
> 'format' => 'qcow2',
> 'parent' => '../9004/base-9004-disk-1.qcow2',
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '16114',
> - 'volid' => 'local:9004/base-9004-disk-1.qcow2/16114/vm-16114-disk-1.qcow2',
> + 'volid' => 'local:9004/base-9004-disk-1.qcow2/16114/vol-vm-16114-disk-1.qcow2',
> },
> ],
> },
> @@ -287,7 +305,7 @@ my @tests = (
> vmid => '9004',
> files => [
> "$storage_dir/images/9004/base-9004-disk-0.qcow2",
> - "$storage_dir/images/9004/base-9004-disk-1.qcow2",
> + "$storage_dir/vms/9004/base-vol-vm-9004-disk-1.qcow2",
> ],
> expected => [
> {
> @@ -301,14 +319,15 @@ my @tests = (
> 'volid' => 'local:9004/base-9004-disk-0.qcow2',
> },
> {
> - 'content' => 'images',
> + 'content' => 'vm-vol',
> + 'vtype' => 'vm-vol',
> 'ctime' => DEFAULT_CTIME,
> 'format' => 'qcow2',
> 'parent' => undef,
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '9004',
> - 'volid' => 'local:9004/base-9004-disk-1.qcow2',
> + 'volid' => 'local:9004/base-vol-vm-9004-disk-1.qcow2',
> },
> ],
> },
> @@ -428,21 +447,22 @@ my @tests = (
> #"$storage_dir/images/ssss/base-4321-disk-0.qcow2/1234/vm-1234-disk-0.qcow2",
> vmid => undef,
> files => [
> - "$storage_dir/images/1234/vm-1234-disk-0.qcow2",
> + "$storage_dir/vms/1234/vol-vm-1234-disk-0.qcow2",
> ],
> parent => [
> - "../ssss/base-4321-disk-0.qcow2",
> + "../ssss/base-vol-vm-4321-disk-0.qcow2",
> ],
> expected => [
> {
> - 'content' => 'images',
> + 'content' => 'vm-vol',
> + 'vtype' => 'vm-vol',
> 'ctime' => DEFAULT_CTIME,
> 'format' => 'qcow2',
> - 'parent' => '../ssss/base-4321-disk-0.qcow2',
> + 'parent' => '../ssss/base-vol-vm-4321-disk-0.qcow2',
> 'size' => DEFAULT_SIZE,
> 'used' => DEFAULT_USED,
> 'vmid' => '1234',
> - 'volid' => 'local:1234/vm-1234-disk-0.qcow2',
> + 'volid' => 'local:1234/vol-vm-1234-disk-0.qcow2',
> },
> ],
> },
> @@ -521,7 +541,7 @@ plan tests => $plan + 1;
>
> {
> my $sid = 'local';
> - my $types = ['rootdir', 'images', 'vztmpl', 'iso', 'backup', 'snippets'];
> + my $types = ['images', 'rootdir', 'vm-vol', 'ct-vol', 'vztmpl', 'iso', 'backup', 'snippets'];
> my @suffixes = ('qcow2', 'raw', 'vmdk', 'vhdx');
>
> # run through test cases
> @@ -555,6 +575,13 @@ plan tests => $plan + 1;
> eval { $got = PVE::Storage::Plugin->list_volumes($sid, $scfg, $vmid, $types) };
> $got = $@ if $@;
>
> + sub sort_by_volid {
> + my ($data) = @_;
> + return [sort { $a->{volid} cmp $b->{volid} } @$data];
> + }
> +
> + $got = sort_by_volid($got) if ref($got) && ref($got) eq 'ARRAY';
> + $expected = sort_by_volid($expected);
> is_deeply($got, $expected, $description) || diag(explain($got));
>
> # clean up after each test case, otherwise
> diff --git a/src/test/parse_volname_test.pm b/src/test/parse_volname_test.pm
> index 0d077a9..297e280 100644
> --- a/src/test/parse_volname_test.pm
> +++ b/src/test/parse_volname_test.pm
> @@ -20,6 +20,19 @@ my $tests = [
> #
> {
> description => 'VM disk image, linked, qcow2, vm- as base-',
> + volname => "$vmid/vol-vm-$vmid-disk-0.qcow2/$vmid/vol-vm-$vmid-disk-0.qcow2",
> + expected => [
> + 'vm-vol',
> + "vol-vm-$vmid-disk-0.qcow2",
> + "$vmid",
> + "vol-vm-$vmid-disk-0.qcow2",
> + "$vmid",
> + !!0,
> + 'qcow2',
> + ],
> + },
> + {
> + description => 'VM disk image, legacy, linked, qcow2, vm- as base-',
> volname => "$vmid/vm-$vmid-disk-0.qcow2/$vmid/vm-$vmid-disk-0.qcow2",
> expected => [
> 'images',
> @@ -27,11 +40,21 @@ my $tests = [
> "$vmid",
> "vm-$vmid-disk-0.qcow2",
> "$vmid",
> - undef,
> + !!0,
> 'qcow2',
> ],
> },
> #
> + # Container volumes
> + #
> + {
> + description => 'CT rootdir image',
> + volname => "$vmid/vol-ct-$vmid-disk-0.raw",
> + expected => [
> + 'ct-vol', "vol-ct-$vmid-disk-0.raw", "$vmid", undef, undef, !!0, 'raw',
> + ],
> + },
> + #
> # iso
> #
> {
> @@ -94,7 +117,7 @@ my $tests = [
> description => 'Container rootdir, subvol',
> volname => "$vmid/subvol-$vmid-disk-0.subvol",
> expected =>
> - ['images', "subvol-$vmid-disk-0.subvol", "$vmid", undef, undef, undef, 'subvol'],
> + ['images', "subvol-$vmid-disk-0.subvol", "$vmid", undef, undef, !!0, 'subvol'],
> },
> {
> description => 'Backup archive, no virtualization type',
> @@ -209,7 +232,7 @@ foreach my $s (@$disk_suffix) {
> description => "VM disk image, $s",
> volname => "$vmid/vm-$vmid-disk-1.$s",
> expected => [
> - 'images', "vm-$vmid-disk-1.$s", "$vmid", undef, undef, undef, "$s",
> + 'images', "vm-$vmid-disk-1.$s", "$vmid", undef, undef, !!0, "$s",
> ],
> },
> {
> @@ -221,7 +244,7 @@ foreach my $s (@$disk_suffix) {
> "$vmid",
> "base-$vmid-disk-0.$s",
> "$vmid",
> - undef,
> + !!0,
> "$s",
> ],
> },
> @@ -229,7 +252,7 @@ foreach my $s (@$disk_suffix) {
> description => "VM disk image, base, $s",
> volname => "$vmid/base-$vmid-disk-0.$s",
> expected => [
> - 'images', "base-$vmid-disk-0.$s", "$vmid", undef, undef, 'base-', "$s",
> + 'images', "base-$vmid-disk-0.$s", "$vmid", undef, undef, !!1, "$s",
> ],
> },
> );
> @@ -295,6 +318,7 @@ plan tests => scalar @$tests + 1;
>
> my $seen_vtype;
> my $vtype_subdirs = { map { $_ => 1 } keys %{ PVE::Storage::Plugin::get_vtype_subdirs() } };
> +delete $vtype_subdirs->{rootdir}; # this one cannot be observed, it maps to the 'ct-vol' type.
>
> foreach my $t (@$tests) {
> my $description = $t->{description};
> diff --git a/src/test/path_to_volume_id_test.pm b/src/test/path_to_volume_id_test.pm
> index ab7e276..bb2d47f 100644
> --- a/src/test/path_to_volume_id_test.pm
> +++ b/src/test/path_to_volume_id_test.pm
> @@ -25,8 +25,9 @@ my $scfg = {
> 'maxfiles' => 0,
> 'content' => {
> 'snippets' => 1,
> - 'rootdir' => 1,
> 'images' => 1,
> + 'vm-vol' => 1,
> + 'ct-vol' => 1,
> 'iso' => 1,
> 'backup' => 1,
> 'vztmpl' => 1,
> @@ -44,24 +45,31 @@ my $scfg = {
> # expected => the result that path_to_volume_id should return
> my @tests = (
> {
> - description => 'Image, qcow2',
> + description => 'Image, qcow2, legacy naming',
> volname => "$storage_dir/images/16110/vm-16110-disk-0.qcow2",
> expected => [
> 'images', 'local:16110/vm-16110-disk-0.qcow2',
> ],
> },
> + {
> + description => 'Image, qcow2',
> + volname => "$storage_dir/vms/16110/vol-vm-16110-disk-0.qcow2",
> + expected => [
> + 'vm-vol', 'local:16110/vol-vm-16110-disk-0.qcow2',
> + ],
> + },
> {
> description => 'Image, raw',
> - volname => "$storage_dir/images/16112/vm-16112-disk-0.raw",
> + volname => "$storage_dir/vms/16112/vol-vm-16112-disk-0.raw",
> expected => [
> - 'images', 'local:16112/vm-16112-disk-0.raw',
> + 'vm-vol', 'local:16112/vol-vm-16112-disk-0.raw',
> ],
> },
> {
> description => 'Image template, qcow2',
> - volname => "$storage_dir/images/9004/base-9004-disk-0.qcow2",
> + volname => "$storage_dir/vms/9004/base-vol-vm-9004-disk-0.qcow2",
> expected => [
> - 'images', 'local:9004/base-9004-disk-0.qcow2',
> + 'vm-vol', 'local:9004/base-vol-vm-9004-disk-0.qcow2',
> ],
> },
>
> @@ -141,14 +149,14 @@ my @tests = (
> description => 'Rootdir, folder subvol, legacy naming',
> volname => "$storage_dir/images/1234/subvol-1234-disk-0.subvol/", # fileparse needs / at the end
> expected => [
> - 'ct-vol', 'local:1234/subvol-1234-disk-0.subvol',
> + 'images', 'local:1234/subvol-1234-disk-0.subvol',
> ],
> },
> {
> description => 'Rootdir, folder subvol',
> - volname => "$storage_dir/images/1234/subvol-1234-disk-0.subvol/", # fileparse needs / at the end
> + volname => "$storage_dir/cts/1234/vol-ct-1234-disk-0.subvol/", # fileparse needs / at the end
> expected => [
> - 'images', 'local:1234/subvol-1234-disk-0.subvol',
> + 'ct-vol', 'local:1234/vol-ct-1234-disk-0.subvol',
> ],
> },
> {
> @@ -239,6 +247,7 @@ plan tests => scalar @tests + 1;
>
> my $seen_vtype;
> my $vtype_subdirs = { map { $_ => 1 } keys %{ PVE::Storage::Plugin::get_vtype_subdirs() } };
> +delete $vtype_subdirs->{rootdir}; # this one cannot be observed, it maps to the 'ct-vol' type.
>
> foreach my $tt (@tests) {
> my $file = $tt->{volname};
> diff --git a/src/test/run_test_lvmplugin.pl b/src/test/run_test_lvmplugin.pl
> index e87a3de..92e8d6e 100755
> --- a/src/test/run_test_lvmplugin.pl
> +++ b/src/test/run_test_lvmplugin.pl
> @@ -159,7 +159,7 @@ my $test7 = sub {
>
> eval {
> my $tmp_volid =
> - PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef, 1024 * 1024);
> + PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef, 1024 * 1024, undef);

^ Assuming that this should be "images" instead of undef above, since
vdisk_alloc now throws when undef is passed.

Should probably also add a test that expects `vdisk_alloc()` to throw
when undef is passed.

>
> if ($tmp_volid ne "$storagename:vm-112-disk-0") {
> die "volname:$tmp_volid don't match\n";
> @@ -186,15 +186,16 @@ my $test7 = sub {
> }
>
> eval {
> - my $tmp_volid =
> - PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef, 2048 * 1024);
> + my $tmp_volid = PVE::Storage::vdisk_alloc(
> + $cfg, $storagename, "112", "raw", undef, 2048 * 1024, 'vm-vol',
> + );
>
> - if ($tmp_volid ne "$storagename:vm-112-disk-1") {
> + if ($tmp_volid ne "$storagename:vol-vm-112-disk-1") {
> die "volname:$tmp_volid don't match\n";
> }

^ This here also trips up; see the following output:

run test7 "vdisk_alloc"
Logical volume "vm-112-disk-0" created.
Logical volume "vol-vm-112-disk-2" created.
Test7 b: volname:lvmregression:vol-vm-112-disk-2 don't match
Logical volume "vm-102-disk-1" successfully removed.
Logical volume "vm-112-disk-0" successfully removed.
Logical volume "vol-vm-112-disk-2" successfully removed.
Volume group "regressiontest" successfully removed

Haven't fully investigated yet, but at a quick glance this seems
related to the changes to `my $get_vm_disk_number = sub { ... }`
and `get_next_vm_diskname()` done in patch 17.

> eval {
> run_command(
> - "lvs --noheadings -o lv_size $vgname/vm-112-disk-1",
> + "lvs --noheadings -o lv_size $vgname/vol-vm-112-disk-1",
> outfunc => sub {
> my $tmp = shift;
> if ($tmp !~ m/2\.00g/) {
> diff --git a/src/test/run_test_zfspoolplugin.pl b/src/test/run_test_zfspoolplugin.pl
> index 9bd70a8..99ab6e2 100755
> --- a/src/test/run_test_zfspoolplugin.pl
> +++ b/src/test/run_test_zfspoolplugin.pl
> @@ -580,7 +580,7 @@ my $test13 = sub {
>
> eval {
> my $tmp_volid =
> - PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef, 1024 * 1024);
> + PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef, 1024 * 1024, undef);

^ Trips up; assuming this also takes "images" instead of undef due to
the changes made to `vdisk_alloc()`.

>
> if ($tmp_volid ne "$storagename:vm-112-disk-0") {
> die "volname:$tmp_volid don't match\n";
> @@ -607,18 +607,19 @@ my $test13 = sub {
> }
>
> eval {
> - my $tmp_volid =
> - PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef, 2048 * 1024);
> + my $tmp_volid = PVE::Storage::vdisk_alloc(
> + $cfg, $storagename, "112", "raw", undef, 2048 * 1024, 'vm-vol',
> + );
>
> - if ($tmp_volid ne "$storagename:vm-112-disk-1") {
> + if ($tmp_volid ne "$storagename:vol-vm-112-disk-1") {
> die "volname:$tmp_volid don't match\n";

^ Also trips up; probably due to the changes related to disk-number
fetching as mentioned above.

> }
> eval {
> run_command(
> - "zfs get -H volsize $zpath\/vm-112-disk-1",
> + "zfs get -H volsize $zpath\/vol-vm-112-disk-1",
> outfunc => sub {
> my $tmp = shift;
> - if ($tmp !~ m/^$zpath\/vm-112-disk-1.*volsize.*2G.*$/) {
> + if ($tmp !~ m/^$zpath\/vol-vm-112-disk-1.*volsize.*2G.*$/) {
> die "size don't match\n";
> }
> },
> @@ -635,8 +636,9 @@ my $test13 = sub {
> }
>
> eval {
> - my $tmp_volid =
> - PVE::Storage::vdisk_alloc($cfg, $storagename, "113", "subvol", undef, 1024 * 1024);
> + my $tmp_volid = PVE::Storage::vdisk_alloc(
> + $cfg, $storagename, "113", "subvol", undef, 1024 * 1024, undef,
> + );

^ Trips up as well; see above.

>
> if ($tmp_volid ne "$storagename:subvol-113-disk-0") {
> die "volname:$tmp_volid don't match\n";
> @@ -663,18 +665,19 @@ my $test13 = sub {
> }
>
> eval {
> - my $tmp_volid =
> - PVE::Storage::vdisk_alloc($cfg, $storagename, "113", "subvol", undef, 2048 * 1024);
> + my $tmp_volid = PVE::Storage::vdisk_alloc(
> + $cfg, $storagename, "113", "subvol", undef, 2048 * 1024, 'ct-vol',
> + );
>
> - if ($tmp_volid ne "$storagename:subvol-113-disk-1") {
> + if ($tmp_volid ne "$storagename:subvol-ct-113-disk-1") {
> die "volname:$tmp_volid don't match\n";

^ Trips up as well; see above.

> }
> eval {
> run_command(
> - "zfs get -H refquota $zpath\/subvol-113-disk-1",
> + "zfs get -H refquota $zpath\/subvol-ct-113-disk-1",
> outfunc => sub {
> my $tmp = shift;
> - if ($tmp !~ m/^$zpath\/subvol-113-disk-1.*refquota.*G.*$/) {
> + if ($tmp !~ m/^$zpath\/subvol-ct-113-disk-1.*refquota.*G.*$/) {
> die "size don't match\n";
> }
> },
> @@ -778,7 +781,7 @@ my $test11 = sub {

^ Bunch of things for this test fail; at a quick glance this also seems
related to the changes to `my $get_vm_disk_number = sub { ... }`
and `get_next_vm_diskname()` done in patch 17.

>
> print "\nrun test11 \"volume_is_base\"\n";
>
> - eval { PVE::Storage::vdisk_clone($cfg, "$storagename:$vmdisk", 110); };
> + eval { PVE::Storage::vdisk_clone($cfg, "$storagename:$vmdisk", 110, undef, undef); };
> if (!$@) {
> $count++;
> warn "Test11 a: clone_image only works on base images";
> @@ -786,7 +789,7 @@ my $test11 = sub {
>
> eval {
> if ("$storagename:$vmbase\/vm-110-disk-0" ne
> - PVE::Storage::vdisk_clone($cfg, "$storagename:$vmbase", 110, '__base__')
> + PVE::Storage::vdisk_clone($cfg, "$storagename:$vmbase", 110, '__base__', undef)
> ) {
> $count++;
> warn "Test11 b";
> @@ -806,13 +809,15 @@ my $test11 = sub {
> warn "Test11 b: $@";
> }
>
> - eval { PVE::Storage::vdisk_clone($cfg, "$storagename:$vmbase\/$vmlinked", 111); };
> + eval {
> + PVE::Storage::vdisk_clone($cfg, "$storagename:$vmbase\/$vmlinked", 111, undef, undef);
> + };
> if (!$@) {
> $count++;
> warn "Test11 c: clone_image only works on base images";
> }
>
> - eval { PVE::Storage::vdisk_clone($cfg, "$storagename:$ctdisk", 110); };
> + eval { PVE::Storage::vdisk_clone($cfg, "$storagename:$ctdisk", 110, undef, undef); };
> if (!$@) {
> $count++;
> warn "Test11 d: clone_image only works on base images";
> @@ -820,7 +825,7 @@ my $test11 = sub {
>
> eval {
> if ("$storagename:$ctbase\/subvol-210-disk-0" ne
> - PVE::Storage::vdisk_clone($cfg, "$storagename:$ctbase", 210, '__base__')
> + PVE::Storage::vdisk_clone($cfg, "$storagename:$ctbase", 210, '__base__', undef)
> ) {
> $count++;
> warn "Test11 e";
> @@ -840,7 +845,9 @@ my $test11 = sub {
> warn "Test11 e: $@";
> }
>
> - eval { PVE::Storage::vdisk_clone($cfg, "$storagename:$ctbase\/$ctlinked", 211); };
> + eval {
> + PVE::Storage::vdisk_clone($cfg, "$storagename:$ctbase\/$ctlinked", 211, undef, undef);
> + };
> if (!$@) {
> $count++;
> warn "Test11 f: clone_image only works on base images";