]> arthur.barton.de Git - bup.git/commitdiff
fsck: report par2 parallel detection status
authorRob Browning <rlb@defaultvalue.org>
Fri, 29 Nov 2019 20:58:36 +0000 (14:58 -0600)
committerRob Browning <rlb@defaultvalue.org>
Fri, 29 Nov 2019 21:23:28 +0000 (15:23 -0600)
When attempting to detect whether or not par2 supports parallel
processing, don't suppress its stdout for now so that we'll see
anything unexpected (should be empty).  When verbose, log what we
think we've detected along with any unexpected par2 stderr output.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
cmd/fsck-cmd.py

index 08c6fb821033ef56b9f3f29235abda3e3be5410e..2073524007054e31403f012d66948221c2f697f5 100755 (executable)
@@ -8,7 +8,7 @@ exec "$bup_python" "$0" ${1+"$@"}
 from __future__ import absolute_import, print_function
 import sys, os, glob, subprocess
 from shutil import rmtree
-from subprocess import call
+from subprocess import PIPE, Popen
 from tempfile import mkdtemp
 
 from bup import options, git
@@ -53,10 +53,19 @@ def is_par2_parallel():
         canary = tmpdir + '/canary'
         with open(canary, 'w') as f:
             print('canary', file=f)
-        p = subprocess.Popen(['par2', 'create', '-qq', '-t1', canary],
-                             stdout=nullf, stderr=nullf, stdin=nullf)
-        rc = p.wait()
-        return rc == 0
+        p = subprocess.Popen(('par2', 'create', '-qq', '-t1', canary),
+                             stderr=PIPE, stdin=nullf)
+        _, err = p.communicate()
+        parallel = p.returncode == 0
+        if opt.verbose:
+            if err != b'Invalid option specified: -t1\n':
+                log('Unexpected par2 error output\n')
+                log(err)
+            if parallel:
+                log('Assuming par2 supports parallel processing\n')
+            else:
+                log('Assuming par2 does not support parallel processing\n')
+        return parallel
     finally:
         rmtree(tmpdir)