diff options
author | Alexander Motin <mav@FreeBSD.org> | 2021-10-05 19:01:16 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2021-10-05 19:01:16 +0000 |
commit | 730ea72c706ef8e025616772cfd86fd89ed3d42e (patch) | |
tree | 471f44af379d20b0f2868fb862aad2faa798efcc /sys | |
parent | 8f9be1eed11c27c66386c3d72cd6c6aef597fa0d (diff) | |
download | src-730ea72c706ef8e025616772cfd86fd89ed3d42e.tar.gz src-730ea72c706ef8e025616772cfd86fd89ed3d42e.zip |
cam(4): Limit search for disks in SES enclosure by single bus
At least for SAS that we only support now disks are typically
connected to the same bus as the enclosure. Limiting the search
scope makes it much faster on systems with multiple buses and
thousands of disks.
Reviewed by: imp
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Differential Revision: https://reviews.freebsd.org/D32305
Diffstat (limited to 'sys')
-rw-r--r-- | sys/cam/scsi/scsi_enc_ses.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c index f4f1c4a23516..39d99fd23eb9 100644 --- a/sys/cam/scsi/scsi_enc_ses.c +++ b/sys/cam/scsi/scsi_enc_ses.c @@ -374,6 +374,10 @@ typedef struct ses_softc { ses_control_reqlist_t ses_pending_requests; } ses_softc_t; +static int ses_search_globally = 0; +SYSCTL_INT(_kern_cam_enc, OID_AUTO, search_globally, CTLFLAG_RWTUN, + &ses_search_globally, 0, "Search for disks on other buses"); + /** * \brief Reset a SES iterator to just before the first element * in the configuration. @@ -890,6 +894,10 @@ ses_path_iter_devid_callback(enc_softc_t *enc, enc_element_t *elem, + devid->length; memcpy(device_pattern->data.devid_pat.id, devid, device_pattern->data.devid_pat.id_len); + if (!ses_search_globally) { + device_pattern->flags |= DEV_MATCH_PATH; + device_pattern->path_id = xpt_path_path_id(enc->periph->path); + } memset(&cdm, 0, sizeof(cdm)); if (xpt_create_path(&cdm.ccb_h.path, /*periph*/NULL, |