diff --git a/debian/changelog b/debian/changelog
index aef12e6f892309b1018c51ac6660b17f34f69be2..0ef4fb34257a83be87700dff64f67db202fda3f2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ tar (1.30+dfsg-2) unstable; urgency=medium
     pristine-tar to ask tar to recreate pre-1.30 broken behavior so that it's
     possible to recover a tar file stored in a repo in the old, broken format.
     closes: #897653
+  * patch from upstream that fixes race condition in dirrem01 and dirrem02
+    tests when building on a slow machine, closes: #897591
 
  -- Bdale Garbee <bdale@gag.com>  Wed, 16 May 2018 01:47:48 -0600
 
diff --git a/debian/patches/fix-race-in-dirrem01-and-dirrem02.diff b/debian/patches/fix-race-in-dirrem01-and-dirrem02.diff
new file mode 100644
index 0000000000000000000000000000000000000000..90b2434ff8774ad8067c055a81196c9443d5e618
--- /dev/null
+++ b/debian/patches/fix-race-in-dirrem01-and-dirrem02.diff
@@ -0,0 +1,90 @@
+From 64b43fdf70d82c39eb2ca900cd4f8e49b86c2020 Mon Sep 17 00:00:00 2001
+From: Pavel Raiskup <praiskup@redhat.com>
+Date: Thu, 4 Jan 2018 18:55:12 +0100
+Subject: 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.
+---
+ 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
+
diff --git a/debian/patches/series b/debian/patches/series
index 665382520964bf0ef211e5d12182c7976b51ac7f..706876301db8ff79df76dd843372a79079fef219 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@ pristine-tar.diff
 listed03-linux-only
 rmt.8-header-wrong
 fix-for-difflink.at-failure.diff
+fix-race-in-dirrem01-and-dirrem02.diff