diff options
author | mjacob <mjacob@FreeBSD.org> | 2010-05-26 22:49:42 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2010-05-26 22:49:42 +0000 |
commit | 39b696507f1a5623910a10e31faedf7281e3cc41 (patch) | |
tree | 814f54bc94bcdd3b953da0eada061521fa6b750d /sys/dev/isp | |
parent | 7201725878b6cb600187de6a38ff7c846c85ba0b (diff) | |
download | FreeBSD-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.c | 9 |
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; |