[Libburn-hackers] Re: libburn never finishes burning DVD image

Thomas Schmitt scdbackup at gmx.net
Wed Oct 28 10:59:39 CDT 2009


Hi,

i reviewed the processing path for DVD-R within
libburn.

The best suspect for now is a command which
tells the drive that no more data are to
be expected: SYNCHRONIZE CACHE.
It is sent to the drive (with Immed bit = 1)
and then the drive is asked repeatedly whether
it is done (command TEST UNIT READY).
(For the interested reader
  http://www.t10.org/ftp/t10/drafts/mmc5/mmc5r03c.pdf
 chapter 6: Commands.)


In my test runs with debugging output 
  cdrskin -vvv dev=/dev/sr2 image.iso 2>&1 | tee -i /tmp/cdrskin.log

the command is reported before the last progress
messages
  ...
  Track 01: 1680 of 1680 MB written (fifo 100%) [buf 100%]   2.0x.
  cdrskin_debug: fifo ended work with ret=2
  cdrskin: DEBUG : syncing cache

  Track 01: 1680 of 1680 MB written (fifo 100%) [buf 100%]   0.3x.
  Track 01: 1680 of 1680 MB written (fifo 100%) [buf 100%]   1.9x.
  cdrskin: thank you for being patient for 682 seconds
  ...
  cdrskin: thank you for being patient for 730 seconds                  cdrskin
: DEBUG : Async SYNCHRONIZE CACHE succeeded after 46.7 seconds

  Track 01: Total bytes read/written: 1761968128/1761968128 (860336 sectors).
  Writing  time:  730.765s
  ...


The asynchronous waiting loop has a timeout of
3600 seconds. It is unclear what will happen then
if the drive is still trying to flush its buffer
and to end writing.

The timeout can be reduced in the source code of
libburn. libburn/spc.c line 2855:
    if (spc_wait_unit_attention(d, 3600, "SYNCHRONIZE CACHE", 0) <= 0)

------------------------------------------------

Heiko, do you feel apt to serve as remote code
editor ? Compilation is supposed to be without
problems. (once: ./configure , then: make )

My proposal would be to reduce in
  cdrskin-0.7.2/libburn/spc.c
from
  http://scdbackup.sourceforge.net/cdrskin-0.7.2.pl00.tar.gz
the timeout to 300 seconds, to compile, and to
run that cdrskin binary with -vvv :

  /.../cdrskin/cdrskin -vvv dev=/dev/dvd0 dvd.iso 2>&1 | \
  tee -i /tmp/cdrskin.log

Where /.../ is the absolute path of the
cdrskin-0.7.2 directory.
Allow the command to idle five minutes at the end
and hope that you don't have to reboot.

I would be interested in a summary of the outcome
and in file /tmp/cdrskin.log .


Again, sorry for having not much clue yet what
libburn would do different from growisofs.
I need to reduce the range of suspicious
gestures. Hopefully /tmp/cdrskin.log provides
me with some hints.


Have a nice day :)

Thomas



More information about the Libburn-hackers mailing list