summaryrefslogtreecommitdiff
path: root/app-arch/tar/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-06-23 07:00:28 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-06-23 07:00:28 +0100
commite23cdda4dbb0c83b9e682ab5e916085a35203da5 (patch)
tree5a4ac448a3b288b731c24d947e0ce52df3cab07b /app-arch/tar/files
parent8187a741807f3e9a9e26304973cf18087dcf2560 (diff)
gentoo resync : 23.06.2018
Diffstat (limited to 'app-arch/tar/files')
-rw-r--r--app-arch/tar/files/tar-1.30-fix-test-117-and-118.patch89
1 files changed, 89 insertions, 0 deletions
diff --git a/app-arch/tar/files/tar-1.30-fix-test-117-and-118.patch b/app-arch/tar/files/tar-1.30-fix-test-117-and-118.patch
new file mode 100644
index 000000000000..2f75da6cd247
--- /dev/null
+++ b/app-arch/tar/files/tar-1.30-fix-test-117-and-118.patch
@@ -0,0 +1,89 @@
+tests: fix race in dirrem01 and dirrem02
+
+Previously the '--checkpoint-action=echo' was triggered after
+'--checkpoint-action=sleep=1' - so the order of events *usually*
+was (for --format='gnu'):
+
+ ...
+ 1. checkpoint handler before write of 'dir/sub' member
+ 2. one-second delay
+ 3. stderr write: 'tar: Write checkpoint 3'
+ 4. write the member 'dir/sub' into the archive
+ 5. check that the member's ctime has not been changed
+ 6. genfile's detecting 'Write checkpoint', doing unlink
+ ...
+
+But sometimes, the genfile was fast enough to win the race and
+unlinked the directory before the member was written into the
+archive (IOW, the order was 1-2-3-6-4-5). This led to the
+occasional warning 'tar: dir/sub: file changed as we read it'.
+
+Swap the order of 'sleep=1' and 'echo' actions so the genfile
+utility has (hopefully) enough time to do the unlink before
+writing the file into the archive (enforce 1-2-3-6-4-5 order).
+
+* tests/dirrem01.at: Swap 'sleep=1' and 'echo' actions.
+* tests/dirrem02.at: Likewise.
+
+Origin: https://lists.gnu.org/archive/html/bug-tar/2018-01/msg00000.html
+---
+ tests/dirrem01.at | 5 +++--
+ tests/dirrem02.at | 7 ++++---
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/tests/dirrem01.at b/tests/dirrem01.at
+index 40344dc..dabc206 100644
+--- a/tests/dirrem01.at
++++ b/tests/dirrem01.at
+@@ -47,14 +47,15 @@ gnu) CPT=3;;
+ esac
+
+ genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \
+- tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='sleep=1' \
+- --checkpoint-action='echo' -c -f archive.tar \
++ tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='echo' \
++ --checkpoint-action='sleep=1' -c -f archive.tar \
+ --listed-incremental db -v dir >/dev/null
+ ],
+ [1],
+ [ignore],
+ [tar: dir: Directory is new
+ tar: dir/sub: Directory is new
++tar: dir/sub: file changed as we read it
+ tar: dir/sub: File removed before we read it
+ ],[],[],[gnu,posix])
+
+diff --git a/tests/dirrem02.at b/tests/dirrem02.at
+index e1cf9ef..924454f 100644
+--- a/tests/dirrem02.at
++++ b/tests/dirrem02.at
+@@ -20,7 +20,7 @@
+
+ # Description:
+ #
+-# When an explicitley named directory disappears during creation
++# When an explicitly named directory disappears during creation
+ # of incremental dump, tar should still exit with TAREXIT_FAILURE (2).
+ #
+ # For further details see dirrem01.at
+@@ -44,14 +44,15 @@ gnu) CPT=3;;
+ esac
+
+ genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \
+- tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='sleep=1' \
+- --checkpoint-action='echo' -c -f archive.tar \
++ tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='echo' \
++ --checkpoint-action='sleep=1' -c -f archive.tar \
+ --listed-incremental db -v dir dir/sub >/dev/null
+ ],
+ [2],
+ [ignore],
+ [tar: dir: Directory is new
+ tar: dir/sub: Directory is new
++tar: dir/sub: file changed as we read it
+ tar: dir/sub: Cannot open: No such file or directory
+ tar: Exiting with failure status due to previous errors
+ ],[],[],[gnu,posix])
+--
+cgit v1.0-41-gc330
+