aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2022-08-07 02:49:03 +0000
committerDouglas Gilbert <dgilbert@interlog.com>2022-08-07 02:49:03 +0000
commit4ea97e60c544ad44ee7396c815064d87f0d25874 (patch)
treeb040380ea3573c0efc82ccc782879be13fe3a32f
parent23beedb782b58779546c58a7e9ef18aeccf50485 (diff)
downloadsg3_utils-4ea97e60c544ad44ee7396c815064d87f0d25874.tar.gz
rescan-scsi-bus: sgdevice26: do not traverse sg class if scsi_device isnot added
For system which has a massive number of scsi_devices, it would takes a long time to traverse /sys/class/scsi_generic to find a related sg. If the scsi_device of specific scsiid host:channel:target:lun did not added, the traverse would find no sg neither. Signed-off-by: Wenchao Hao <haowenchao@huawei.com> From: https://github.com/doug-gilbert/sg3_utils/pull/21 git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@965 6180dd3e-e324-4e3e-922d-17de1ae2f315
-rwxr-xr-xscripts/rescan-scsi-bus.sh19
1 files changed, 11 insertions, 8 deletions
diff --git a/scripts/rescan-scsi-bus.sh b/scripts/rescan-scsi-bus.sh
index 0c333846..f3e3b2c6 100755
--- a/scripts/rescan-scsi-bus.sh
+++ b/scripts/rescan-scsi-bus.sh
@@ -184,18 +184,21 @@ sgdevice26 ()
{
local gendev
+ # if the scsi device has not been added, then there would not
+ # a related sgdev. So it's pointless to scan all sgs to find
+ # a related sg.
+ scsidev=/sys/class/scsi_device/${host}:${channel}:${id}:${lun}
+ if [ ! -e "$scsidev" ]; then
+ SGDEV=""
+ return
+ fi
+
gendev=/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/generic
if [ -e "$gendev" ] ; then
SGDEV=$(basename "$(readlink "$gendev")")
- else
- for SGDEV in /sys/class/scsi_generic/sg*; do
- DEV=$(readlink "$SGDEV/device")
- if [ "${DEV##*/}" = "$host:$channel:$id:$lun" ] ; then
- SGDEV=$(basename "$SGDEV"); return
- fi
- done
- SGDEV=""
+ return
fi
+ SGDEV=""
}
# Find sg device with 2.4 report-devs extensions