Test macros for finding reason of stall problem with Pioneer DVD-216D on DVD-R
This commit is contained in:
parent
937a226543
commit
3c2ad1be42
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2009.10.27.101031"
|
#define Cdrskin_timestamP "2009.10.30.134640"
|
||||||
|
@ -2749,4 +2749,26 @@ BURN_END_DECLS
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Temporary facility for exploring Problems with Pioneer DVR-216D which
|
||||||
|
does not end writing of DVD-R.
|
||||||
|
This code does not hamper normal operations but causes some extra
|
||||||
|
messages to stderr and lots of text lines in File
|
||||||
|
/tmp/libburn_sg_command_log
|
||||||
|
|
||||||
|
Move the next line outside this remark and remove all blanks up to "define".
|
||||||
|
# define Libburn_pioneer_dvr_216d_tesT 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Temporary facility to disable asynchronous execution of the final buffer
|
||||||
|
flush command SYNCHRONIZE CACHE. This is suspected to cycle endlessly
|
||||||
|
on Pioneer DVR-216D.
|
||||||
|
On the other hand, synchronous execution of the command blocks a P-ATA
|
||||||
|
controller for both eventually connected devices.
|
||||||
|
|
||||||
|
Move the next line outside this remark and remove all blanks up to "define".
|
||||||
|
# Libburn_pioneer_dvr_sync_not_immeD 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#endif /*LIBBURN_H*/
|
#endif /*LIBBURN_H*/
|
||||||
|
@ -2823,7 +2823,9 @@ void mmc_sync_cache(struct burn_drive *d)
|
|||||||
*/
|
*/
|
||||||
c.retry = 1;
|
c.retry = 1;
|
||||||
|
|
||||||
|
#ifndef Libburn_pioneer_dvr_sync_not_immeD
|
||||||
c.opcode[1] |= 2; /* ts A70918 : Immed */
|
c.opcode[1] |= 2; /* ts A70918 : Immed */
|
||||||
|
#endif
|
||||||
|
|
||||||
c.page = NULL;
|
c.page = NULL;
|
||||||
c.dir = NO_TRANSFER;
|
c.dir = NO_TRANSFER;
|
||||||
@ -2852,7 +2854,12 @@ void mmc_sync_cache(struct burn_drive *d)
|
|||||||
d->cancel = 1;
|
d->cancel = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Libburn_pioneer_dvr_216d_tesT
|
||||||
|
if (spc_wait_unit_attention(d, 300, "SYNCHRONIZE CACHE", 0) <= 0)
|
||||||
|
#else
|
||||||
if (spc_wait_unit_attention(d, 3600, "SYNCHRONIZE CACHE", 0) <= 0)
|
if (spc_wait_unit_attention(d, 3600, "SYNCHRONIZE CACHE", 0) <= 0)
|
||||||
|
#endif
|
||||||
d->cancel = 1;
|
d->cancel = 1;
|
||||||
else
|
else
|
||||||
d->needs_sync_cache = 0;
|
d->needs_sync_cache = 0;
|
||||||
|
@ -1655,6 +1655,12 @@ int sg_release(struct burn_drive *d)
|
|||||||
#define Libburn_log_sg_command_stderR 1
|
#define Libburn_log_sg_command_stderR 1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef Libburn_pioneer_dvr_216d_tesT
|
||||||
|
#define Libburn_log_sg_commandS 1
|
||||||
|
#define Libburn_fflush_log_sg_commandS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef Libburn_log_sg_commandS
|
#ifdef Libburn_log_sg_commandS
|
||||||
|
|
||||||
/** Logs command (before execution) */
|
/** Logs command (before execution) */
|
||||||
|
@ -113,11 +113,13 @@ int spc_wait_unit_attention(struct burn_drive *d, int max_sec, char *cmd_text,
|
|||||||
for(i = !(flag & 1); i < max_sec * 10; i++) {
|
for(i = !(flag & 1); i < max_sec * 10; i++) {
|
||||||
ret = spc_test_unit_ready_r(d, &key, &asc, &ascq);
|
ret = spc_test_unit_ready_r(d, &key, &asc, &ascq);
|
||||||
|
|
||||||
/* <<<
|
#ifdef Libburn_pioneer_dvr_216d_tesT
|
||||||
|
if ((i % 100) == 1)
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"libburn_EXPERIMENTAL: i= %d ret= %d key= %X asc= %2.2X ascq= %2.2X\n",
|
"libburn_EXPERIMENTAL: i= %d ret= %d key= %X asc= %2.2X ascq= %2.2X\n",
|
||||||
i, ret, (unsigned) key, (unsigned) asc, (unsigned) ascq);
|
i, ret, (unsigned) key,
|
||||||
*/
|
(unsigned) asc, (unsigned) ascq);
|
||||||
|
#endif /* Libburn_pioneer_dvr_216d_tesT */
|
||||||
|
|
||||||
if (ret > 0) /* ready */
|
if (ret > 0) /* ready */
|
||||||
break;
|
break;
|
||||||
@ -140,24 +142,14 @@ int spc_wait_unit_attention(struct burn_drive *d, int max_sec, char *cmd_text,
|
|||||||
/* media change notice = try again */
|
/* media change notice = try again */
|
||||||
goto slumber;
|
goto slumber;
|
||||||
|
|
||||||
#ifdef NIX
|
|
||||||
sprintf(msg,
|
|
||||||
"Asynchromous SCSI error on %s: key=%X asc=%2.2Xh ascq=%2.2Xh",
|
|
||||||
cmd_text, (unsigned) key, (unsigned) asc,
|
|
||||||
(unsigned) ascq);
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* ts A90213 */
|
/* ts A90213 */
|
||||||
sprintf(msg,
|
sprintf(msg,
|
||||||
"Asynchromous SCSI error on %s: ", cmd_text);
|
"Asynchronous SCSI error on %s: ", cmd_text);
|
||||||
sense[2] = key;
|
sense[2] = key;
|
||||||
sense[12] = asc;
|
sense[12] = asc;
|
||||||
sense[13] = ascq;
|
sense[13] = ascq;
|
||||||
resp = scsi_error_msg(d, sense, 14, msg + strlen(msg),
|
resp = scsi_error_msg(d, sense, 14, msg + strlen(msg),
|
||||||
&key, &asc, &ascq);
|
&key, &asc, &ascq);
|
||||||
|
|
||||||
#endif /* ! NIX */
|
|
||||||
|
|
||||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||||
0x0002014d,
|
0x0002014d,
|
||||||
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
||||||
|
Loading…
Reference in New Issue
Block a user