> Thanks for letting me know how to make it work. I've run the > dtrace script and tried to eject a DVD in a Plextor 716UF > connected via firewire. I got lots of lines like: > > 0 43859 scsa1394_cmd_fake_comp:entry l_rmb_orig 1, l_nosup_tur 1, > l_nosup_start_stop 1, l_nosup_inquiry 0
Fine, this confirms that you're seeing the same issue that I've reported as CR 6448149 [*]. scsa1394 thinks that it is talking to a device that has broken "TEST UNIT READY" and "START STOP UNIT" commands and refuses to send these SCSI commands to the firewire device. Problem is that these flags (l_nosup_tur and l_nosup_start_stop) shouldn't be set, I bet that your optical firewire device has no problem with these commands. [*] http://www.opensolaris.org/jive/thread.jspa?threadID=10965&tstart=0 Suggested fix: ============== A "TEST_UNIT_READY" command failing with "status check" is not an indication that TEST UNIT READY commands are broken and need fake responses. For example a status check response with KEY_UNIT_ATTENTION, 29h/00h POWER ON, RESET, OR BUS DEVICE RESET OCCURRED KEY_NOT_READY, 3Ah/00h MEDIUM NOT PRESENT is quite common with optical media devices and such a respone tells us that the TEST_UNIT_READY command is working just fine. diff -ru ../opensolaris-20060703/usr/src/uts/common/io/1394/targets/scsa1394/hba.c usr/src/uts/common/io/1394/targets/scsa1394/hba.c --- ../opensolaris-20060703/usr/src/uts/common/io/1394/targets/scsa1394/hba.c 2006-07-04 13:15:41.000000000 +0200 +++ usr/src/uts/common/io/1394/targets/scsa1394/hba.c 2006-07-11 23:29:46.825253569 +0200 @@ -999,6 +999,10 @@ if (scsa1394_probe_tran(pkt) < 0) { if (pkt->pkt_reason == CMD_INCOMPLETE) { ret = SCSIPROBE_NORESP; + } else if (pkt->pkt_reason == CMD_TRAN_ERR && + (*(pkt->pkt_scbp) & STATUS_MASK) == STATUS_CHECK && + pkt->pkt_state & STATE_ARQ_DONE) { + ret = SCSIPROBE_EXISTS; } else { ret = SCSIPROBE_FAILURE; } This message posted from opensolaris.org
