Re: growisofs + pipebuf2 = trouble
Andreas Klauer <Andreas.Klauer@metamorpher.de> writes:
> I'm trying to get growisofs to work together with pipebuf2 [1]
> and could use some help here, since I'm experiencing problems.
>
> The command line I use is:
> cat DVD.iso | pipebuf2 -b 32 | growisofs -dvd-compat -Z /dev/sr0=/dev/fd/0
>
> The writing process seems to work, as no errors are reported, however the
> result is always partially corrupt when using this method. Wrong data is
> spread all over the disk. However, if I redirect the pipebuf2 output into
> a regular file instead of piping to growisofs, the result is valid. So if
> it's a bug in pipebuf2, it only occurs under special circumstances...
...
> Additional information about my system:
> Athlon XP 2000+, Gentoo, Kernel 2.6.2
It is a bug in pipebuf2 that is triggered by the smarter handling of
pipes in the 2.6 kernel. I've uploaded a fixed version:
http://w1.894.telia.com/~u89404340/pipebuf2.c
The bug fix looks like this:
--- pipebuf2.c~ 2004-01-06 14:00:27.000000000 +0100
+++ pipebuf2.c 2004-02-23 20:53:57.000000000 +0100
@@ -117,7 +117,7 @@
if (ret > 0) {
if (FD_ISSET(STDIN_FILENO, &readfds)) {
int readPos = (bufPos + dataLen) % bufSize;
- int maxLen = bufSize - readPos;
+ int maxLen = MIN(bufSize - readPos, bufSize - dataLen);
ret = read(STDIN_FILENO, &buffer[readPos], maxLen);
if (ret < 0) {
if ((errno != EINTR) && (errno != EAGAIN)) {
--
Peter Osterlund - petero2@telia.com
http://w1.894.telia.com/~u89404340
Reply to: