diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index f8daa7b..b69f2d5 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2011.06.08.200329" +#define Cdrskin_timestamP "2011.06.14.152832" diff --git a/libburn/mmc.c b/libburn/mmc.c index 05e9e4a..ee79f0d 100644 --- a/libburn/mmc.c +++ b/libburn/mmc.c @@ -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; } diff --git a/libburn/spc.c b/libburn/spc.c index fb83242..6b8333c 100644 --- a/libburn/spc.c +++ b/libburn/spc.c @@ -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);