+ return (0);
+ sc->sc_blks = ((sc->sc_capbuf[0] << 24) | (sc->sc_capbuf[1] << 16) |
+ (sc->sc_capbuf[2] << 8) | sc->sc_capbuf[3]) + 1;
+ sc->sc_blksize = (sc->sc_capbuf[4] << 24) | (sc->sc_capbuf[5] << 16) |
+ (sc->sc_capbuf[6] << 8) | sc->sc_capbuf[7];
+
+ sc->sc_bshift = 0;
+ for (i = sc->sc_blksize; i > DEV_BSIZE; i >>= 1)
+ ++sc->sc_bshift;
+ sc->sc_blks <<= sc->sc_bshift;
+
+ return (1);
+}
+
+/*
+ * Test to see if device is present.
+ * Return true if found and initialized ok.
+ */
+rzprobe(sd)
+ register struct scsi_device *sd;
+{
+ register struct rz_softc *sc = &rz_softc[sd->sd_unit];
+ register int i;
+ ScsiInquiryData inqbuf;
+ ScsiClass7Sense *sp;
+
+ /* init some parameters that don't change */
+ sc->sc_sd = sd;
+ sc->sc_cmd.sd = sd;
+ sc->sc_cmd.unit = sd->sd_unit;
+ sc->sc_rwcmd.unitNumber = sd->sd_slave;
+
+ /* try to find out what type of device this is */
+ sc->sc_format_pid = 1; /* force use of sc_cdb */
+ sc->sc_flags = RZF_NOERR; /* don't print SCSI errors */
+ sc->sc_cdb.len = sizeof(ScsiGroup0Cmd);
+ scsiGroup0Cmd(SCSI_INQUIRY, sd->sd_slave, 0, sizeof(inqbuf),
+ (ScsiGroup0Cmd *)sc->sc_cdb.cdb);
+ sc->sc_buf.b_flags = B_BUSY | B_PHYS | B_READ;
+ sc->sc_buf.b_bcount = sizeof(inqbuf);
+ sc->sc_buf.b_un.b_addr = (caddr_t)&inqbuf;
+ sc->sc_buf.b_actf = (struct buf *)0;
+ sc->sc_tab.b_actf = &sc->sc_buf;
+ rzstart(sd->sd_unit);
+ if (biowait(&sc->sc_buf) ||
+ (i = sizeof(inqbuf) - sc->sc_buf.b_resid) < 5)