On 09/11/2017 09:23 AM, 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.

Easily reproducible with a non existing path or an unsupported
one, e.g.: /proc

---
  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);


looks good to me.

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to