diff --git a/PVE/Storage.pm b/PVE/Storage.pm index 4863d84..c381394 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -1210,7 +1210,7 @@ sub scan_cifs { sub scan_zfs { - my $cmd = ['zfs', 'list', '-t', 'filesystem', '-H', '-o', 'name,avail,used']; + my $cmd = ['zfs', 'list', '-t', 'filesystem', '-Hp', '-o', 'name,avail,used']; my $res = []; run_command($cmd, outfunc => sub { @@ -1218,8 +1218,8 @@ sub scan_zfs { if ($line =~m/^(\S+)\s+(\S+)\s+(\S+)$/) { my ($pool, $size_str, $used_str) = ($1, $2, $3); - my $size = PVE::Storage::ZFSPoolPlugin::zfs_parse_size($size_str); - my $used = PVE::Storage::ZFSPoolPlugin::zfs_parse_size($used_str); + my $size = $size_str + 0; + my $used = $used_str + 0; # ignore subvolumes generated by our ZFSPoolPlugin return if $pool =~ m!/subvol-\d+-[^/]+$!; return if $pool =~ m!/basevol-\d+-[^/]+$!; diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm index 7da9e78..3808ab7 100644 --- a/PVE/Storage/ZFSPoolPlugin.pm +++ b/PVE/Storage/ZFSPoolPlugin.pm @@ -54,42 +54,6 @@ sub options { # static zfs helper methods -sub zfs_parse_size { - my ($text) = @_; - - return 0 if !$text; - - if ($text =~ m/^(\d+(\.\d+)?)([TGMK])?$/) { - - my ($size, $reminder, $unit) = ($1, $2, $3); - - if ($unit) { - if ($unit eq 'K') { - $size *= 1024; - } elsif ($unit eq 'M') { - $size *= 1024*1024; - } elsif ($unit eq 'G') { - $size *= 1024*1024*1024; - } elsif ($unit eq 'T') { - $size *= 1024*1024*1024*1024; - } else { - die "got unknown zfs size unit '$unit'\n"; - } - } - - if ($reminder) { - $size = ceil($size); - } - - return $size + 0; - - } - - warn "unable to parse zfs size '$text'\n"; - - return 0; -} - sub zfs_parse_zvol_list { my ($text) = @_; @@ -117,11 +81,11 @@ sub zfs_parse_zvol_list { if ($refquota eq 'none') { $zvol->{size} = 0; } else { - $zvol->{size} = zfs_parse_size($refquota); + $zvol->{size} = $refquota + 0; } $zvol->{format} = 'subvol'; } else { - $zvol->{size} = zfs_parse_size($size); + $zvol->{size} = $size + 0; $zvol->{format} = 'raw'; } if ($origin !~ /^-$/) {