use warnings;
use IO::File;
use POSIX;
-use PVE::Tools qw(run_command file_read_firstline trim dir_glob_regex dir_glob_foreach);
+use PVE::Tools qw(run_command);
use PVE::Storage::Plugin;
-use PVE::JSONSchema qw(get_standard_option);
use Digest::MD5 qw(md5_hex);
use base qw(PVE::Storage::Plugin);
sub zfs_request {
my ($scfg, $timeout, $method, @params) = @_;
- my $cmdmap = ();
- my $msg = '';
+ my $cmdmap;
my $zfscmd;
my $target;
- $timeout = 5 if !$timeout;
- my $output = sub {
- my $line = shift;
- $msg .= "$line\n";
- };
+ $timeout = 5 if !$timeout;
if ($scfg->{iscsiprovider} eq 'comstar') {
my $stmfadmcmd = "/usr/sbin/stmfadm";
$zfscmd = 'zfs';
}
-
if ($scfg->{sudo}) {
$zfscmd = 'sudo ' . $zfscmd;
$target = $scfg->{portal};
my $cmd = [@ssh_cmd, $target, $zfscmd, $method, @params];
+ my $msg = '';
+
+ my $output = sub {
+ my $line = shift;
+ $msg .= "$line\n";
+ };
+
run_command($cmd, outfunc => $output, timeout => $timeout);
return $msg;
}
sub zfs_get_pool_stats {
- my ($scfg) = @_;
+ my ($scfg) = @_;
- my $size = 0;
- my $used = 0;
+ my $size = 0;
+ my $used = 0;
- my $text = zfs_request($scfg, undef, 'get', '-o', 'value', '-Hp',
- 'available,used', $scfg->{pool});
+ my $text = zfs_request($scfg, undef, 'get', '-o', 'value', '-Hp',
+ 'available,used', $scfg->{pool});
- my @lines = split /\n/, $text;
+ my @lines = split /\n/, $text;
- if($lines[0] =~ /^(\d+)$/) {
- $size = $1;
- }
+ if($lines[0] =~ /^(\d+)$/) {
+ $size = $1;
+ }
- if($lines[1] =~ /^(\d+)$/) {
- $used = $1;
- }
+ if($lines[1] =~ /^(\d+)$/) {
+ $used = $1;
+ }
- return ($size, $used);
+ return ($size, $used);
}
sub zfs_parse_zvol_list {
$disk = $zvols[1];
next unless $disk =~ m!^(\w+)-(\d+)-(\w+)-(\d+)$!;
$name = $pool . '/' . $disk;
- }
- else {
+ } else {
next;
}
if ($zvol =~ /^.+\/.+/) {
$object = "/dev/zvol/rdsk/$zvol";
- }
- else {
+ } else {
$object = "/dev/zvol/rdsk/$scfg->{pool}/$zvol";
}
my $pool = $values[0];
my $image = $values[1];
- my $owner;
- if ($image =~ m/^((vm|base)-(\d+)-\S+)$/) {
- $owner = $3;
- }
- else {
- next;
- }
+
+ next if $image !~ m/^((vm|base)-(\d+)-\S+)$/;
+ my $owner = $3;
my $parent = $zvol->{origin};
if($zvol->{origin} && $zvol->{origin} =~ m/^$scfg->{pool}\/(\S+)$/){
$class->parse_volname($volname);
my $key = undef;
- if($snapname){
+
+ if ($snapname) {
$key = 'snap';
} else {
$key = $isBase ? 'base' : 'current';
}
+
return 1 if $features->{$feature}->{$key};
return undef;