Browse Source

backup: improve exit code reporting

Return some meaningful error code. Unfortunately the more meaningful
option (retrieving process exit code) can lead to false errors
(described in comment), but at least report exit code of tar2qfile.
Marek Marczykowski-Górecki 8 years ago
parent
commit
b38ea60f00
1 changed files with 7 additions and 2 deletions
  1. 7 2
      qubes-rpc/qubes.Restore

+ 7 - 2
qubes-rpc/qubes.Restore

@@ -20,9 +20,14 @@ else
     eval "set -- $args"
     # Use named pipe to pass original stdin to tar2file
     $@ > $tmpdir/backup-data < /dev/null &
-    retcode=$?
     /usr/lib/qubes/tar2qfile $tmpdir/backup-data $paths
-    wait
+    # Restoration may be terminated earlier because of selected files. This
+    # will be seen as EPIPE to the retrieving process, which may cause retcode
+    # other than 0 in some cases - which would be incorrectly treated as backup
+    # restore error. So instead of that, use tar2qfile exit code (and have dom0
+    # detect if anything wrong with actual data)
+    retcode=$?
+    wait -n
     rm $tmpdir/backup-data
     rmdir $tmpdir
     exit $retcode