From d6eee582dc35480605bae29f5c477bfa84573bcf Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 17 Sep 2012 07:58:20 +0200 Subject: [PATCH] nexenta: correctly get volsize (needs extra API call) --- PVE/Storage/NexentaPlugin.pm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/PVE/Storage/NexentaPlugin.pm b/PVE/Storage/NexentaPlugin.pm index 230fbcb..046a2c0 100644 --- a/PVE/Storage/NexentaPlugin.pm +++ b/PVE/Storage/NexentaPlugin.pm @@ -36,6 +36,27 @@ sub nexenta_request { return 1; } +sub nexenta_get_zvol_size { + my ($zvol, $scfg) = @_; + + my $json = '{"method": "get_child_prop", "object": "zvol", "params": ["' . $zvol . '", "volsize"]}'; + my $volsize = nexenta_request($scfg, $json); + if ($volsize =~ /^(\d+)([KMGT])$/) { + my ($size, $unit) = ($1, $2); + 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; + } + return $size; + } + die "got undefined size '$volsize'\n"; +} + sub nexenta_list_lun_mapping_entries { my ($zvol, $scfg) = @_; @@ -116,7 +137,8 @@ sub nexenta_list_zvol { $list->{$pool}->{$image} = { name => $image, - size => "", + size => nexenta_get_zvol_size($zvol, $scfg), + format => 'raw', vmid => $owner }; -- 2.39.5