summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2010-05-26 22:49:42 +0000
committermjacob <mjacob@FreeBSD.org>2010-05-26 22:49:42 +0000
commit39b696507f1a5623910a10e31faedf7281e3cc41 (patch)
tree814f54bc94bcdd3b953da0eada061521fa6b750d /sys/dev/isp
parent7201725878b6cb600187de6a38ff7c846c85ba0b (diff)
downloadFreeBSD-src-39b696507f1a5623910a10e31faedf7281e3cc41.zip
FreeBSD-src-39b696507f1a5623910a10e31faedf7281e3cc41.tar.gz
Add a new primitive, XPT_SCAN_TGT, to cover the range between scanning a
whole bus (XPT_SCAN_BUS) and a single lun on that bus (XPT_SCAN_LUN). It's less resource comsumptive than scanning a whole bus when the caller knows only one target has changes. Reviewed by: scsi@ Sponsored by: Panasas MFC after: 1 month
Diffstat (limited to 'sys/dev/isp')
-rw-r--r--sys/dev/isp/isp_freebsd.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index a991df6..3d84b93 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -3893,19 +3893,14 @@ isp_make_here(ispsoftc_t *isp, int chan, int tgt)
}
/*
- * Allocate a CCB, create a wildcard path for this bus/target and schedule a rescan.
+ * Allocate a CCB, create a wildcard path for this target and schedule a rescan.
*/
ccb = xpt_alloc_ccb_nowait();
if (ccb == NULL) {
isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan);
return;
}
- /*
- * xpt_rescan only honors wildcard in the target field.
- * Scan the whole bus instead of target, which will then
- * force a scan of all luns.
- */
- if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
+ if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), tgt, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan");
xpt_free_ccb(ccb);
return;
OpenPOWER on IntegriCloud