diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2022-08-07 02:49:03 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2022-08-07 02:49:03 +0000 |
commit | 4ea97e60c544ad44ee7396c815064d87f0d25874 (patch) | |
tree | b040380ea3573c0efc82ccc782879be13fe3a32f | |
parent | 23beedb782b58779546c58a7e9ef18aeccf50485 (diff) | |
download | sg3_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-x | scripts/rescan-scsi-bus.sh | 19 |
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 |