[pve-devel] [PATCH storage] ZFSPoolPlugin: fix #2662 get volume size correctly

Fabian Grünbichler f.gruenbichler at proxmox.com
Fri Apr 3 17:07:04 CEST 2020


there's another instance of 'zfs list ...' in PVE::Storage that could 
also be switched to '-p'

On April 3, 2020 2:29 pm, Aaron Lauterer wrote:
> Getting the volume sizes as byte values instead of converted to human
> readable units helps to avoid rounding errors in the further processing
> if the volume size is more on the odd side.
> 
> The `zfs list` command supports the p(arseable) flag since a few years
> now.
> When returning the size in bytes there is no  calculation performed and
> thus we need to explicitly cast the size to an integer before returning
> it.
> 
> Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
> ---
> 
> I don't think we need to worry about other ZFS implementations regarding
> ZFS over iSCSI. FreeBSD supports it since 9.3 [0], released mid 2014.
> Illumos added it in 2013 [1].
> 
> [0] https://www.freebsd.org/cgi/man.cgi?query=zfs&apropos=0&sektion=0&manpath=FreeBSD+9.3-RELEASE&arch=default&format=html
> [1] https://github.com/illumos/illumos-gate/commit/43d68d68c1ce08fb35026bebfb141af422e7082e#diff-b138320fc5f9d5c48bb4b03a5e4e4cbb
> 
>  PVE/Storage/ZFSPoolPlugin.pm | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm
> index b538e3b..cb3f2f0 100644
> --- a/PVE/Storage/ZFSPoolPlugin.pm
> +++ b/PVE/Storage/ZFSPoolPlugin.pm
> @@ -81,7 +81,7 @@ sub zfs_parse_size {
>  	    $size = ceil($size);
>  	}

and then the whole zfs_parse_size sub which is completely broken can be 
dropped :)

>  
> -	return $size;
> +	return $size + 0;

but untainting/converting to int is still needed for those 4 current 
call sites

>  
>      }
>  
> @@ -400,7 +400,7 @@ sub zfs_delete_zvol {
>  sub zfs_list_zvol {
>      my ($class, $scfg) = @_;
>  
> -    my $text = $class->zfs_request($scfg, 10, 'list', '-o', 'name,volsize,origin,type,refquota', '-t', 'volume,filesystem', '-Hr');
> +    my $text = $class->zfs_request($scfg, 10, 'list', '-o', 'name,volsize,origin,type,refquota', '-t', 'volume,filesystem', '-Hrp');
>      my $zvols = zfs_parse_zvol_list($text);
>      return undef if !$zvols;
>  
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 




More information about the pve-devel mailing list