Reporting SCSI error if command RESERVE TRACK fails

1.1.0
Thomas Schmitt 11 years ago
parent f93babeea6
commit 4abf2b75b1
  1. 2
      cdrskin/cdrskin_timestamp.h
  2. 4
      libburn/mmc.c
  3. 9
      libburn/spc.c

@ -1 +1 @@
#define Cdrskin_timestamP "2011.06.08.200329"
#define Cdrskin_timestamP "2011.06.14.152832"

@ -359,6 +359,10 @@ int mmc_reserve_track(struct burn_drive *d, off_t size)
c->page = NULL;
c->dir = NO_TRANSFER;
d->issue_command(d, c);
if (c->error) {
d->cancel = 1;
scsi_notify_error(d, c, c->sense, 18, 2);
}
return !c->error;
}

@ -1413,7 +1413,9 @@ static char *scsi_command_name(unsigned int c, int flag)
/* ts A61030 - A61115 */
/* @param flag bit0=do report conditions which are considered not an error */
/* @param flag bit0= do report conditions which are considered not an error
bit1= report with severity FAILURE rather than DEBUG
*/
int scsi_notify_error(struct burn_drive *d, struct command *c,
unsigned char *sense, int senselen, int flag)
{
@ -1436,6 +1438,8 @@ int scsi_notify_error(struct burn_drive *d, struct command *c,
if (key == 0x2 && asc == 0x3A &&
ascq>=0 && ascq <= 0x02) /* MEDIUM NOT PRESENT */
{ret = 1; goto ex;}
if (key == 0 && asc == 0 && ascq == 0)
{ret = 1; goto ex;}
}
sprintf(msg, "SCSI error condition on command %2.2Xh %s: ",
@ -1443,7 +1447,8 @@ int scsi_notify_error(struct burn_drive *d, struct command *c,
scsi_command_name((unsigned int) c->opcode[0], 0));
strcat(msg, scsi_msg);
ret = libdax_msgs_submit(libdax_messenger, d->global_index, 0x0002010f,
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH, msg,0,0);
flag & 2 ? LIBDAX_MSGS_SEV_FAILURE : LIBDAX_MSGS_SEV_DEBUG,
LIBDAX_MSGS_PRIO_HIGH, msg,0,0);
ex:;
BURN_FREE_MEM(msg);
BURN_FREE_MEM(scsi_msg);

Loading…
Cancel
Save