Date: Wed, 1 Mar 2000 23:44:34 -0700 From: "Kenneth D. Merry" <ken@kdm.org> To: Mike Smith <msmith@FreeBSD.ORG> Cc: scsi@FreeBSD.ORG Subject: Re: chio trap with not-ready changer Message-ID: <20000301234434.A36537@panzer.kdm.org> In-Reply-To: <200003010841.AAA05125@mass.cdrom.com>; from msmith@FreeBSD.ORG on Wed, Mar 01, 2000 at 12:41:33AM -0800 References: <20000301012528.A29274@panzer.kdm.org> <200003010841.AAA05125@mass.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Wed, Mar 01, 2000 at 00:41:33 -0800, Mike Smith wrote:
> > > I tried with both 1 and also 100. With the latter, I get a lot of
> > > repeats, ending in:
> > >
> > > (ch0:ahc0:0:4:0): CAM status = 0x4c, retry count = 1
> > > (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 8 1d 0 20 0
> > > (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> > > (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> > > (ch0:ahc0:0:4:0): CAM status = 0x4c, retry count = 0
> > > (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 8 1d 0 20 0
> > > (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> > > (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> > > (ch0:ahc0:0:4:0): CAM status = 0x4c, retry count = 0
> > > (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 0 1d 0 20 0
> > > (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> > > (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> > > (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 0 1d 0 20 0
> > > (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> > > (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> > > (ch0:ahc0:0:4:0): fatal error, failed to attach to device
> > > (ch0:ahc0:0:4:0): lost device
> > > (ch0:ahc0:0:4:0): removing device entry
> > >
> > > (Note two there with a retry count of 0. Weird.)
> >
> > Note that one has the SMS_DBD flag set in the second byte of the CDB,
> > the other has it cleared.
>
> I'm not sure what the significance of that is, actually.
Well, the changer probe code will try doing a mode sense without block
descriptors disabled. That's because some changers don't like it when you
disable block descriptors. The comment on rev 1.2 of scsi_ch.c describes
the problem.
> > > With 1, there's obviously a lot less, but the same result.
> >
> > Can you include a little more of the retries? The disable block
> > descriptors flag is getting cleared mighty late if the above is the tail
> > end of the output from the 100 retries.
[ ... ]
> (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> (ch0:ahc0:0:4:0): CAM status = 0x4c, retry count = 4
> (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 8 1d 0 20 0
> (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> (ch0:ahc0:0:4:0): CAM status = 0x4c, retry count = 3
> (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 8 1d 0 20 0
> (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
> (ch0:ahc0:0:4:0): CAM status = 0x4c, retry count = 2
> (ch0:ahc0:0:4:0): MODE SENSE(06). CDB: 1a 8 1d 0 20 0
> (ch0:ahc0:0:4:0): UNIT ATTENTION asc:29,0
> (ch0:ahc0:0:4:0): Power on, reset, or bus device reset occurred
>
> As far as I can see, they all look the same as the count=1 case.
Yep, thanks.
> > In any case, try putting a printf inside the SS_TUR case in
> > cam_periph_error() in cam_periph.c, to see whether the quirk entry is
> > getting matched correctly and therefore whether the test unit ready is
> > getting issued.
>
> Hmm. Trying:
>
> if (((err_action & SS_MASK) == SS_TUR)
> && save_ccb != NULL
> && ccb->ccb_h.retry_count > 0) {
>
> printf("cam_periph_error: sending TUR\n");
>
> I never see the above message.
Okay, my guess is that I flubbed the quirk entry somehow. Anyway, try the
attached patch for scsi_all.c. It makes the quirk entry much more generic
in the hopes that it'll match.
Ken
--
Kenneth Merry
ken@kdm.org
[-- Attachment #2 --]
==== //depot/FreeBSD-ken/src/sys/cam/scsi/scsi_all.c#4 - /a/ken/perforce/FreeBSD-ken/src/sys/cam/scsi/scsi_all.c ====
*** /tmp/tmp.36576.0 Wed Mar 1 23:33:51 2000
--- /a/ken/perforce/FreeBSD-ken/src/sys/cam/scsi/scsi_all.c Wed Mar 1 23:33:31 2000
***************
*** 725,730 ****
--- 725,748 ----
* WARNING: You must update the num_ascs field below for this quirk table
* entry if you add more entries.
*/
+ static struct asc_table_entry spectra_8000_entries[] = {
+ {SST(0x29, 0x00, SS_TUR|SSQ_DECREMENT_COUNT|ENXIO,
+ "Power on, reset, or bus device reset occurred")}
+ };
+
+ /*
+ * WARNING: You must update the num_ascs field below for this quirk table
+ * entry if you add more entries.
+ */
+ static struct asc_table_entry sony_mo_entries[] = {
+ {SST(0x04, 0x00, SS_START|SSQ_DECREMENT_COUNT|ENXIO,
+ "Logical unit not ready, cause not reportable")}
+ };
+
+ /*
+ * WARNING: You must update the num_ascs field below for this quirk table
+ * entry if you add more entries.
+ */
static struct asc_table_entry quantum_fireball_entries[] = {
{SST(0x04, 0x0b, SS_START|SSQ_DECREMENT_COUNT|ENXIO,
"Logical unit not ready, initializing cmd. required")}
***************
*** 741,746 ****
--- 759,786 ----
{T_DIRECT, SIP_MEDIA_FIXED, "QUANTUM", "FIREBALL S*", "*"},
1, /* number of vendor-specific sense codes for this entry */
quantum_fireball_entries
+ },
+ {
+ /*
+ * This Sony MO drive likes to return 0x04, 0x00 when it
+ * isn't spun up.
+ * Reported by: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
+ */
+ {T_DIRECT, SIP_MEDIA_REMOVABLE, "SONY", "SMO-C501-09*", "*"},
+ 1, /* number of vendor-specific sense codes for this entry */
+ sony_mo_entries
+ },
+ {
+ /*
+ * The <SPECTRA STL-8000 1.94> apparantly doesn't clear
+ * unit attention conditions when a mode sense is issued.
+ * So we have to issue test unit readies until the unit
+ * attention condition has been cleared.
+ * Reported by: Mike Smith <msmith@FreeBSD.ORG>
+ */
+ {T_CHANGER, SIP_MEDIA_REMOVABLE, "SPECT*", "*", "*"},
+ 1, /* number of vendor-specific sense codes for this entry */
+ spectra_8000_entries
}
};
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000301234434.A36537>
