diff options
author | mjacob <mjacob@FreeBSD.org> | 2010-02-23 14:35:44 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2010-02-23 14:35:44 +0000 |
commit | 44c8f3e4cb82bdb92e65a5fffcae8406e574a49c (patch) | |
tree | 7046370f7981abf060610b6e37dfec1bc9c97430 /sys/dev/isp | |
parent | d1674995a5d7551a3598070d0dfeabada9d498f9 (diff) | |
download | FreeBSD-src-44c8f3e4cb82bdb92e65a5fffcae8406e574a49c.zip FreeBSD-src-44c8f3e4cb82bdb92e65a5fffcae8406e574a49c.tar.gz |
xpt_rescan only honors a wildcard in the target field. Revert the previous
change and have isp_make_here scan the whole bus which will then scan all
luns.
I think xpt_rescan needs to be fixed, but that's a separable issue.
Suggested by: Alexander
Diffstat (limited to 'sys/dev/isp')
-rw-r--r-- | sys/dev/isp/isp_freebsd.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c index 7e1fa85..515e637 100644 --- a/sys/dev/isp/isp_freebsd.c +++ b/sys/dev/isp/isp_freebsd.c @@ -3892,7 +3892,12 @@ isp_make_here(ispsoftc_t *isp, int chan, int tgt) isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan); return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), tgt, 0) != CAM_REQ_CMP) { + /* + * 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) { isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan"); xpt_free_ccb(ccb); return; |