#!/usr/bin/perl
+use lib '..';
+
use strict;
use warnings;
+
use Data::Dumper qw(Dumper);
use PVE::Storage;
use PVE::Cluster;
my $storagename = "zfstank99";
my $subvol = 'regressiontest';
+my $mountpoint = "${subvol}_mnt";
#volsize in GB
my $volsize = 1;
$fail = 0;
eval {
@res = PVE::Storage::path($cfg, "$storagename:$ctdisk");
- if ($res[0] ne "\/regressiontest\/$ctdisk") {
+ if ($res[0] ne "\/$mountpoint\/$ctdisk") {
$count++;
$fail = 1;
- warn "Test 19 d: path is not correct: expected \'/regressiontest\/$ctdisk'\ get \'$res[0]\'";
+ warn "Test 19 d: path is not correct: expected \'\/$mountpoint\/$ctdisk'\ get \'$res[0]\'";
}
if ($res[1] ne "202") {
if (!$fail) {
$fail = 0;
eval {
@res = PVE::Storage::path($cfg, "$storagename:$ctbase");
- if ($res[0] ne "\/regressiontest\/$ctbase") {
+ if ($res[0] ne "\/$mountpoint\/$ctbase") {
$count++;
$fail = 1;
- warn "Test 19 e: path is not correct: expected \'\/regressiontest\/$ctbase'\ get \'$res[0]\'";
+ warn "Test 19 e: path is not correct: expected \'\/$mountpoint\/$ctbase'\ get \'$res[0]\'";
}
if ($res[1] ne "200") {
if (!$fail) {
$fail = 0;
eval {
@res = PVE::Storage::path($cfg, "$storagename:$ctbase\/$ctlinked");
- if ($res[0] ne "\/regressiontest\/$ctlinked") {
+ if ($res[0] ne "\/$mountpoint\/$ctlinked") {
$count++;
$fail = 1;
- warn "Test 19 f: path is not correct: expected \'\/regressiontest\/$ctlinked'\ get \'$res[0]\'";
+ warn "Test 19 f: path is not correct: expected \'\/$mountpoint\/$ctlinked'\ get \'$res[0]\'";
}
if ($res[1] ne "201") {
if (!$fail) {
eval {
my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef ,1024 * 1024);
- if ($tmp_volid ne "$storagename:vm-112-disk-1") {
+ if ($tmp_volid ne "$storagename:vm-112-disk-0") {
die "volname:$tmp_volid don't match\n";
}
eval {
- run_command("zfs get -H volsize $zpath\/vm-112-disk-1", outfunc =>
+ run_command("zfs get -H volsize $zpath\/vm-112-disk-0", outfunc =>
sub { my $tmp = shift;
- if ($tmp !~ m/^$zpath\/vm-112-disk-1.*volsize.*1G.*$/) {
+ if ($tmp !~ m/^$zpath\/vm-112-disk-0.*volsize.*1G.*$/) {
die "size don't match\n";
}
});
eval {
my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "112", "raw", undef ,2048 * 1024);
- if ($tmp_volid ne "$storagename:vm-112-disk-2") {
+ if ($tmp_volid ne "$storagename:vm-112-disk-1") {
die "volname:$tmp_volid don't match\n";
}
eval {
- run_command("zfs get -H volsize $zpath\/vm-112-disk-2", outfunc =>
+ run_command("zfs get -H volsize $zpath\/vm-112-disk-1", outfunc =>
sub { my $tmp = shift;
- if ($tmp !~ m/^$zpath\/vm-112-disk-2.*volsize.*2G.*$/) {
+ if ($tmp !~ m/^$zpath\/vm-112-disk-1.*volsize.*2G.*$/) {
die "size don't match\n";
}
});
eval {
my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "113", "subvol", undef ,1024 * 1024);
- if ($tmp_volid ne "$storagename:subvol-113-disk-1") {
+ if ($tmp_volid ne "$storagename:subvol-113-disk-0") {
die "volname:$tmp_volid don't match\n";
}
eval {
- run_command("zfs get -H refquota $zpath\/subvol-113-disk-1", outfunc =>
+ run_command("zfs get -H refquota $zpath\/subvol-113-disk-0", outfunc =>
sub { my $tmp = shift;
- if ($tmp !~ m/^$zpath\/subvol-113-disk-1.*refquota.*1G.*$/) {
+ if ($tmp !~ m/^$zpath\/subvol-113-disk-0.*refquota.*1G.*$/) {
die "size don't match\n";
}
});
eval {
my $tmp_volid = PVE::Storage::vdisk_alloc($cfg, $storagename, "113", "subvol", undef ,2048 * 1024);
- if ($tmp_volid ne "$storagename:subvol-113-disk-2") {
+ if ($tmp_volid ne "$storagename:subvol-113-disk-1") {
die "volname:$tmp_volid don't match\n";
}
eval {
- run_command("zfs get -H refquota $zpath\/subvol-113-disk-2", outfunc =>
+ run_command("zfs get -H refquota $zpath\/subvol-113-disk-1", outfunc =>
sub { my $tmp = shift;
- if ($tmp !~ m/^$zpath\/subvol-113-disk-2.*refquota.*G.*$/) {
+ if ($tmp !~ m/^$zpath\/subvol-113-disk-1.*refquota.*G.*$/) {
die "size don't match\n";
}
});
}
eval {
- if ("$storagename:$vmbase\/vm-110-disk-1" ne
+ if ("$storagename:$vmbase\/vm-110-disk-0" ne
PVE::Storage::vdisk_clone($cfg, "$storagename:$vmbase", 110, '__base__')){
$count++;
warn "Test11 b";
}
- run_command("zfs list -H -o volsize $zpath\/vm-110-disk-1", outfunc => sub {
+ run_command("zfs list -H -o volsize $zpath\/vm-110-disk-0", outfunc => sub {
my $line = shift;
chomp($line);
}
eval {
- if ( "$storagename:$ctbase\/subvol-210-disk-1" ne
+ if ( "$storagename:$ctbase\/subvol-210-disk-0" ne
PVE::Storage::vdisk_clone($cfg, "$storagename:$ctbase", 210, '__base__')){
$count++;
warn "Test11 e";
}
- run_command("zfs list -H -o refquota $zpath\/subvol-210-disk-1", outfunc => sub {
+ run_command("zfs list -H -o refquota $zpath\/subvol-210-disk-0", outfunc => sub {
my $line = shift;
chomp($line);
};
eval {
+ PVE::Storage::activate_volumes($cfg, ["$storagename:$vmdisk"]);
run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
eval {
PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$vmdisk", 'snap1');
+ PVE::Storage::activate_volumes($cfg, ["$storagename:$vmdisk"]);
$tmp_guid = undef;
run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmdisk", outfunc => $parse_guid);
if ($old_guid ne $tmp_guid) {
$tmp_guid = undef;
eval {
+ PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase"]);
run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
eval {
PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$vmbase", 'snap1');
+ PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase"]);
$tmp_guid = undef;
run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmbase", outfunc => $parse_guid);
if ($old_guid ne $tmp_guid) {
$tmp_guid = undef;
eval {
+ PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase/$vmlinked"]);
run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
run_command("sgdisk --randomize-guids \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
eval {
PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$vmbase\/$vmlinked", 'snap1');
+ PVE::Storage::activate_volumes($cfg, ["$storagename:$vmbase/$vmlinked"]);
$tmp_guid = undef;
run_command("sgdisk -p \/dev\/zvol\/$zpath\/$vmlinked", outfunc => $parse_guid);
if ($old_guid ne $tmp_guid) {
eval {
PVE::Storage::volume_snapshot($cfg, "$storagename:$ctdisk", 'snap1');
- run_command("touch \/$zpath\/$ctdisk\/test.txt", outfunc => $parse_guid);
+ run_command("touch \/$mountpoint\/$ctdisk\/test.txt", outfunc => $parse_guid);
eval {
PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$ctdisk", 'snap1');
eval {
- run_command("ls \/$zpath\/$ctdisk\/test.txt", errofunc => sub {});
+ run_command("ls \/$mountpoint\/$ctdisk\/test.txt", errofunc => sub {});
};
if (!$@) {
$count++;
eval {
PVE::Storage::volume_snapshot($cfg, "$storagename:$ctbase", 'snap1');
- run_command("touch \/$zpath\/$ctbase\/test.txt", outfunc => $parse_guid);
+ run_command("touch \/$mountpoint\/$ctbase\/test.txt", outfunc => $parse_guid);
eval {
PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$ctbase", 'snap1');
eval {
- run_command("ls \/$zpath\/$ctbase\/test.txt", errofunc => sub {});
+ run_command("ls \/$mountpoint\/$ctbase\/test.txt", errofunc => sub {});
};
if (!$@) {
$count++;
eval {
PVE::Storage::volume_snapshot($cfg, "$storagename:$ctbase/$ctlinked", 'snap1');
- run_command("touch \/$zpath\/$ctlinked\/test.txt", outfunc => $parse_guid);
+ run_command("touch \/$mountpoint\/$ctlinked\/test.txt", outfunc => $parse_guid);
eval {
PVE::Storage::volume_snapshot_rollback($cfg, "$storagename:$ctbase/$ctlinked", 'snap1');
eval {
$tests->{1} = $test1;
sub setup_zfs {
-
#create VM zvol
print "create zvol $vmdisk\n" if $verbose;
run_command("zfs create -V${volsize}G $zpath\/$vmdisk");
print "create subvol $ctdisk\n" if $verbose;
run_command("zfs create -o refquota=${volsize}G $zpath\/$ctdisk");
- print "create subvol $vmbase\n" if $verbose;
+ print "create subvol $ctbase\n" if $verbose;
run_command("zfs create -o refquota=${volsize}G $zpath\/$ctbase");
run_command("zfs snapshot $zpath\/$ctbase$basesnap");
- print "create linked clone $vmlinked\n" if $verbose;
+ print "create linked clone $ctlinked\n" if $verbose;
run_command("zfs clone $zpath\/$ctbase$basesnap $zpath\/$ctlinked -o refquota=${volsize}G");
- run_command("udevadm trigger --subsystem-match block");
- run_command("udevadm settle --timeout 10 --exit-if-exists=/dev/zvol/$zpath\/$ctlinked");
+
+ my $vollist = [
+ "$storagename:$vmdisk",
+ "$storagename:$vmbase",
+ "$storagename:$vmbase/$vmlinked",
+ "$storagename:$ctdisk",
+ "$storagename:$ctbase",
+ "$storagename:$ctbase/$ctlinked",
+ ];
+
+ PVE::Storage::activate_volumes($cfg, $vollist);
}
sub cleanup_zfs {
}
my $pwd = cwd();
eval {
- run_command("zpool create $subvol $pwd\/zpool.img");
+ run_command("zpool create -m \/$mountpoint $subvol $pwd\/zpool.img");
};
if ($@) {
clean_up_zpool();
'rootdir' => 1
},
'pool' => $subvol,
+ 'mountpoint' => "\/$mountpoint",
'type' => 'zfspool'
},
},
eval {
$tests->{$i}();
};
- warn $@ if $@;
+ if (my $err = $@) {
+ warn $err;
+ $count++;
+ }
cleanup_zfs();
}