From 4966c8869e48c1da4dd2f5244227d36ff5615729 Mon Sep 17 00:00:00 2001 From: Fabian Ebner Date: Thu, 14 Nov 2019 11:33:48 +0100 Subject: [PATCH] Introduce zfs_get_properties helper Signed-off-by: Fabian Ebner --- PVE/Storage/ZFSPoolPlugin.pm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm index 16fb0d6..b8adf1c 100644 --- a/PVE/Storage/ZFSPoolPlugin.pm +++ b/PVE/Storage/ZFSPoolPlugin.pm @@ -287,16 +287,22 @@ sub list_images { return $res; } +sub zfs_get_properties { + my ($class, $scfg, $properties, $dataset, $timeout) = @_; + + my $result = $class->zfs_request($scfg, $timeout, 'get', '-o', 'value', + '-Hp', $properties, $dataset); + my @values = split /\n/, $result; + return wantarray ? @values : $values[0]; +} + sub zfs_get_pool_stats { my ($class, $scfg) = @_; my $available = 0; my $used = 0; - my $text = $class->zfs_request($scfg, undef, 'get', '-o', 'value', '-Hp', - 'available,used', $scfg->{pool}); - - my @lines = split /\n/, $text; + my @lines = $class->zfs_get_properties($scfg, 'available,used', $scfg->{pool}); if($lines[0] =~ /^(\d+)$/) { $available = $1; @@ -448,8 +454,8 @@ sub volume_size_info { $class->parse_volname($volname); my $attr = $format eq 'subvol' ? 'refquota' : 'volsize'; - my $text = $class->zfs_request($scfg, undef, 'get', '-Hp', $attr, "$scfg->{pool}/$vname"); - if ($text =~ /\s$attr\s(\d+)\s/) { + my $value = $class->zfs_get_properties($scfg, $attr, "$scfg->{pool}/$vname"); + if ($value =~ /^(\d+)$/) { return $1; }