From 6674667b7fa138f84fde7201154f4decfa331910 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 8 Jun 2010 17:50:33 +0000 Subject: [PATCH] Handled SCSI status "BUSY" on Solaris --- cdrskin/cdrskin_timestamp.h | 2 +- libburn/sg-solaris.c | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index d5d7a98..74019fc 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2010.06.08.173156" +#define Cdrskin_timestamP "2010.06.08.174946" diff --git a/libburn/sg-solaris.c b/libburn/sg-solaris.c index 784f565..081f636 100644 --- a/libburn/sg-solaris.c +++ b/libburn/sg-solaris.c @@ -577,6 +577,7 @@ int sg_issue_command(struct burn_drive *d, struct command *c) int i, usleep_time, timeout_ms, no_retry = 0, ret; time_t start_time; struct uscsi_cmd cgc; + char msg[80]; static FILE *fp = NULL; c->error = 0; @@ -632,13 +633,14 @@ int sg_issue_command(struct burn_drive *d, struct command *c) 0 = GOOD , 2 = CHECK CONDITION : Sense Data are delivered 8 = BUSY */ - if (ret != 0 && - cgc.uscsi_status != 2 && cgc.uscsi_status != 8) { + if (ret != 0 && cgc.uscsi_status != 2) { + sprintf(msg, + "Failed to transfer command to drive. (uscsi_status = 0x%X)", + (unsigned int) cgc.uscsi_status), libdax_msgs_submit(libdax_messenger, d->global_index, 0x0002010c, LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH, - "Failed to transfer command to drive", - errno, 0); + msg, errno, 0); sg_close_drive(d); d->released = 1; d->busy = BURN_DRIVE_IDLE; @@ -648,10 +650,6 @@ int sg_issue_command(struct burn_drive *d, struct command *c) c->sense[2] &= 15; - if (cgc.uscsi_status == 8) { - /* >>> fake BUSY sense */; - } - /* >>> valid sense: cgc.uscsi_rqlen - cgc.uscsi_rqresid */; if (c->sense[2] || c->sense[12] || c->sense[13]) { @@ -698,7 +696,6 @@ ex:; return 1; } -/* >>> */ /** Tries to obtain SCSI address parameters. @return 1 is success , 0 is failure