On Tue, 2006-04-25 at 16:41 -0500, Gustavo Guillermo Pérez wrote: > Yes I have 3 diferent bridges, with 5 diferent DVDRW from pioneer other Drives > I've tested with this same USB-IDE Bridges works without this problem. > I've tried the flag BLACK_XXX for non tagged queue for this drive but with no > results. > > {"PIONEER", "DVD-RW DVR-110D", NULL, BLIST_RETRY_HWERROR | BLIST_NOTQ} OK ... My best guess has to be that this device accepted and completed the command but is still processing it on the medium, hence the return. Try the attached; I think it makes for these cases. I could be persuaded to drop format and reconstruction in progress, because those can be *very* long operations. James diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 7b0f9a3..764a8b3 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1067,16 +1067,29 @@ void scsi_io_completion(struct scsi_cmnd break; case NOT_READY: /* - * If the device is in the process of becoming ready, - * retry. + * If the device is in the process of becoming + * ready, or has a temporary blockage, retry. */ - if (sshdr.asc == 0x04 && sshdr.ascq == 0x01) { - scsi_requeue_command(q, cmd); - return; + if (sshdr.asc == 0x04) { + switch (sshdr.ascq) { + case 0x01: /* becoming ready */ + case 0x04: /* format in progress */ + case 0x05: /* rebuild in progress */ + case 0x06: /* recalculation in progress */ + case 0x07: /* operation in progress */ + case 0x08: /* Long write in progress */ + case 0x09: /* self test in progress */ + scsi_requeue_command(q, cmd); + return; + default: + break; + } } - if (!(req->flags & REQ_QUIET)) + if (!(req->flags & REQ_QUIET)) { scmd_printk(KERN_INFO, cmd, - "Device not ready.\n"); + "Device not ready: "); + scsi_print_sense_hdr("", &sshdr); + } scsi_end_request(cmd, 0, this_count, 1); return; case VOLUME_OVERFLOW: - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html