[pve-devel] applied: [PATCH common] tools: df: handle a failing df

Wolfgang Bumiller w.bumiller at proxmox.com
Thu Sep 21 09:49:18 CEST 2017


applied

On Mon, Sep 11, 2017 at 09:23:09AM +0200, Wolfgang Bumiller wrote:
> This function assumed df() will work or hang, but it can
> also actually fail and return undef which results in
> warnings - let's silence those.
> ---
>  src/PVE/Tools.pm | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
> index 9ddcfda..7285c59 100644
> --- a/src/PVE/Tools.pm
> +++ b/src/PVE/Tools.pm
> @@ -985,7 +985,8 @@ sub df {
>  	$pipe->writer();
>  	eval {
>  	    my $df = Filesys::Df::df($path, 1);
> -	    print {$pipe} "$df->{blocks}\n$df->{used}\n$df->{bavail}\n";
> +	    print {$pipe} "$df->{blocks}\n$df->{used}\n$df->{bavail}\n"
> +		if defined($df);
>  	    $pipe->close();
>  	};
>  	if (my $err = $@) {
> @@ -998,9 +999,9 @@ sub df {
>      $pipe->reader();
>  
>      my $readvalues = sub {
> -	$res->{total} = int((<$pipe> =~ /^(\d*)$/)[0]);
> -	$res->{used}  = int((<$pipe> =~ /^(\d*)$/)[0]);
> -	$res->{avail} = int((<$pipe> =~ /^(\d*)$/)[0]);
> +	$res->{total} = int(((<$pipe> // 0) =~ /^(\d*)$/)[0]);
> +	$res->{used}  = int(((<$pipe> // 0) =~ /^(\d*)$/)[0]);
> +	$res->{avail} = int(((<$pipe> // 0) =~ /^(\d*)$/)[0]);
>      };
>      eval {
>  	run_with_timeout($timeout, $readvalues);
> -- 
> 2.11.0




More information about the pve-devel mailing list