[PATCH] growisofs failing on some iso files
Hi all,
not only in Fedora [1] but also in Ubuntu [2] there is an issue when
burning DVDs using growisofs (a utility from dvd+rw-tools). The error
occurs when burning only some iso files, basically files that have
different size than a multiple of 32kB. The error looks like this:
:-[ WRITE@LBA=350h failed with SK=0h/ASC=00h/ACQ=03h]: Input/output
error :-(
write failed: Input/output error
I've found out, that when burning DVD media in DAO mode, reserved blocks
count wasn't align to multiple of 16 (which means space of 32kB).
However, only 32kB blocks of data were being written to the media, so I
suppose the error was triggered by the drive complaining that we were
writing the last block outside the reserved area boundaries.
The attached patch is a proposed fix, which align blocks count to
multiple of 16 also when burning in DAO mode. The patch works for my iso
files and no error messages are printed any more.
Any comments on the patch are welcome and feel free to use the patch if
there is still any development in dvd+rw-tools.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=810483
[2] https://bugs.launchpad.net/ubuntu/+source/cdrkit/+bug/15424?comments=all
diff -up dvd+rw-tools-7.1/growisofs_mmc.cpp.blocks dvd+rw-tools-7.1/growisofs_mmc.cpp
--- dvd+rw-tools-7.1/growisofs_mmc.cpp.blocks 2012-04-06 12:31:49.336132465 +0200
+++ dvd+rw-tools-7.1/growisofs_mmc.cpp 2012-04-06 12:32:15.131645600 +0200
@@ -1588,8 +1588,8 @@ static int minus_r_reserve_track (Scsi_C
unsigned int blocks;
blocks = (unsigned int)(size/2048);
+ blocks += 15, blocks &= ~15;
if (is_dao) dao_blocks = blocks;
- else blocks += 15, blocks &= ~15;
fprintf (stderr,"%s: reserving %u blocks",ioctl_device,blocks);
if (is_dao && blocks<380000)
Reply to: