--- a/dump/tape.c
+++ b/dump/tape.c
@@ -738,7 +738,20 @@ rollforward(void)
 pid_t
 fork_clone_io(void)
 {
-	return syscall(SYS_clone, CLONE_ARGS);
+   pid_t res,parent;
+   parent=getppid();		/* az hackety hack... */
+
+   res=syscall(SYS_clone, CLONE_ARGS);
+   getppid();
+   /* as per clone call manpage: caching! */
+   getpid();
+   syscall(SYS_getpid);
+
+   /* az: clone manpage doesn't say jack about what the
+      child receives, but it's NOT ZERO on sparc. however, it seems the
+      ppid is updated and trustworthy - so let's use that... */
+   return parent==getppid()?res:0;
+
 }
 #endif
 #endif
