[Pkg-libburnia-devel] Bug#789260: libburn4: Incompatibility with Plextor PX-608CU burner

Thomas Schmitt scdbackup at gmx.net
Thu Jun 25 18:02:16 UTC 2015


Hi,

> Can't find such piece of code in version 1.3.2.

Urm ... yes. The comment appeared in 1.3.4.
In 1.3.2 it is 

                done = scsi_eval_cmd_outcome(d, c, fp, s.sbp, s.sb_len_wr,
                                             start_time, s.timeout, i, 0);
                if (d->cancel)
                        done = 1;
        }

which would become

                done = scsi_eval_cmd_outcome(d, c, fp, s.sbp, s.sb_len_wr,
                                             start_time, s.timeout, i, 0);
                if (d->cancel)
                        done = 1;

                usleep(10000);

        }


> #define Libburn_sg_linux_retry_usleeP 100000
> #define Libburn_sg_linux_retry_incR   100000

This seems to be a remnant of older code.
Thrown out with commit 3483, but already disabled by 3368.

Now it is in
  libburn/spc.c
function scsi_eval_cmd_outcome().
The macros are in
  libburn/spc.h

/* The waiting time before eventually retrying a failed SCSI command.
   Before each retry wait Libburn_scsi_retry_incR longer than with
   the previous one. At most wait for Libburn_scsi_retry_umaX microseconds.
*/
#define Libburn_scsi_write_retry_usleeP     0
#define Libburn_scsi_write_retry_incR    2000
#define Libburn_scsi_write_retry_umaX   25000

The equivalent to my code change proposal would have been

#define Libburn_scsi_write_retry_usleeP 10000
#define Libburn_scsi_write_retry_incR       0
#define Libburn_scsi_write_retry_umaX   ...whatever...

It seems already to work in e.g. 1.3.8.
The differences of the timestamps [ 2880923 ] [ 2884447 ] [ 2890019 ]
[ 2899397 ] minus the execution times 5778 , 1410, 1475 yield
non-SCSI-execution timegaps of 36, 2114, 4097 microseconds.

I.e. the repetition spent most time at a waiting time of 25000
microseconds. 

So i change my proposal to setting in libburn/spc.c :

#define Libburn_scsi_write_retry_usleeP 10000
#define Libburn_scsi_write_retry_incR    5000
#define Libburn_scsi_write_retry_umaX  100000

This reduces the workload during the first 50 seconds to
25 percent of the current one. At 16 x DVD speed it risks that
the driver buffer runs empty. Let's see.
During the following time it will reduce the number of
unsuccessful retries substantially.


Have a nice day :)

Thomas



More information about the Pkg-libburnia-devel mailing list