Date: Sun, 26 Jul 2009 17:29:31 GMT From: Alexander Motin <mav@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 166591 for review Message-ID: <200907261729.n6QHTVQ0025871@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=166591 Change 166591 by mav@mav_mavbook on 2009/07/26 17:29:04 Some scan related tuning. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#5 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#31 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#16 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#5 (text+ko) ==== @@ -247,11 +247,12 @@ case AC_BUS_RESET: softc = (struct pmp_softc *)periph->softc; cam_periph_async(periph, code, path, arg); + if (softc->state != PMP_STATE_NORMAL) + break; if (code == AC_SENT_BDR || code == AC_BUS_RESET) softc->found = 0; /* We have to reset everything. */ - else if (softc->state != PMP_STATE_NORMAL) - break; softc->state = PMP_STATE_PORTS; + (void)cam_periph_hold(periph, PRIBIO); xpt_schedule(periph, CAM_PRIORITY_BUS); break; default: @@ -347,7 +348,7 @@ * to finish the probe. The reference will be dropped in pmpdone at * the end of probe. */ -// (void)cam_periph_hold(periph, PRIBIO); + (void)cam_periph_hold(periph, PRIBIO); xpt_schedule(periph, CAM_PRIORITY_BUS); return(CAM_REQ_CMP); @@ -680,6 +681,7 @@ default: break; } + cam_periph_unhold(periph); softc->state = PMP_STATE_NORMAL; } ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#31 (text+ko) ==== @@ -261,10 +261,9 @@ cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); - if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) + if ((periph->path->device->flags & CAM_DEV_UNCONFIGURED) || + periph->path->device->protocol == PROTO_SATAPM) PROBE_SET_ACTION(softc, PROBE_RESET); - else if (periph->path->device->protocol == PROTO_SATAPM) - PROBE_SET_ACTION(softc, PROBE_PM_PID); else PROBE_SET_ACTION(softc, PROBE_IDENTIFY); @@ -273,7 +272,7 @@ else softc->flags &= ~PROBE_NO_ANNOUNCE; - xpt_schedule(periph, ccb->ccb_h.pinfo.priority); + xpt_schedule(periph, CAM_PRIORITY_HOST); } static void @@ -282,7 +281,6 @@ /* Probe the device that our peripheral driver points to */ struct ccb_ataio *ataio; struct ccb_scsiio *csio; - struct ccb_trans_settings cts; probe_softc *softc; CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("probestart\n")); @@ -293,17 +291,6 @@ switch (softc->action) { case PROBE_RESET: - if (start_ccb->ccb_h.target_id == 15) { - /* Report SIM that we have no knowledge about PM presence. */ - bzero(&cts, sizeof(cts)); - xpt_setup_ccb(&cts.ccb_h, start_ccb->ccb_h.path, - CAM_PRIORITY_NORMAL); - cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; - cts.type = CTS_TYPE_CURRENT_SETTINGS; - cts.xport_specific.sata.pm_present = 0; - cts.xport_specific.sata.valid = CTS_SATA_VALID_PM; - xpt_action((union ccb *)&cts); - } cam_fill_ataio(ataio, 0, probedone, @@ -598,9 +585,7 @@ xpt_print(path, "Unexpected signature 0x%04x\n", sign); } - found = 0; - xpt_release_ccb(done_ccb); - break; + goto device_fail; } xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); @@ -710,7 +695,6 @@ * drivers that this device is no more. */ if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0) - /* Send the async notification. */ xpt_async(AC_LOST_DEVICE, path, NULL); found = 0; xpt_release_ccb(done_ccb); ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#16 (text+ko) ==== @@ -667,7 +667,7 @@ else softc->flags &= ~PROBE_NO_ANNOUNCE; - xpt_schedule(periph, ccb->ccb_h.pinfo.priority); + xpt_schedule(periph, CAM_PRIORITY_HOST); } static void
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907261729.n6QHTVQ0025871>
