Skip to content

Commit

Permalink
rescan-scsi-bus: sgdevice26: do not traverse sg class if scsi_device …
Browse files Browse the repository at this point in the history
…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: #21


git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@965 6180dd3e-e324-4e3e-922d-17de1ae2f315
  • Loading branch information
doug-gilbert committed Aug 7, 2022
1 parent 23beedb commit 4ea97e6
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions scripts/rescan-scsi-bus.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 4ea97e6

Please sign in to comment.