From b109bf4c5bacf65d32d2ab4fb990efb5230fda27 Mon Sep 17 00:00:00 2001
From: Douglas Gilbert <dgilbert@interlog.com>
Date: Fri, 12 Aug 2022 02:55:43 +0000
Subject: [PATCH] rescan-scsi-bus.sh: add option --no-lip-scan

lip is a FC operation and can be used to rescan device but it can not
specify the channel and target. So add a new option to scan FC hosts
according to the SCSI general interface in sysfs:
/sys/class/scsi_host/hostX/scan.

The default value of no_lip_scan is 0 which does not change the
default behavior.

Fix https://github.com/doug-gilbert/sg3_utils/issues/20

Signed-off-by: Wenchao Hao <haowenchao@huawei.com>

git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@967 6180dd3e-e324-4e3e-922d-17de1ae2f315
---
 scripts/rescan-scsi-bus.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/rescan-scsi-bus.sh b/scripts/rescan-scsi-bus.sh
index 31ae736..67dccf3 100755
--- a/scripts/rescan-scsi-bus.sh
+++ b/scripts/rescan-scsi-bus.sh
@@ -1158,6 +1158,7 @@ if [ "@$1" = @--help ] || [ "@$1" = @-h ] || [ "@$1" = "@-?" ] ; then
     echo "--largelun:      Tell kernel to support LUNs > 7 even on SCSI2 devs"
     echo "--luns=LIST:     Scan only lun(s) in LIST"
     echo "--multipath:     same as -m"
+    echo "--no-lip-scan:   don't scan FC Host with issue-lip"
     echo "--nooptscan:     don't stop looking for LUNs if 0 is not found"
     echo "--remove:        same as -r"
     echo "--reportlun2:    Tell kernel to try REPORT_LUN even on SCSI2 devices"
@@ -1226,6 +1227,7 @@ mp_enable=
 lipreset=-1
 declare -i scan_flags=0
 ignore_rev=0
+no_lip_scan=0
 
 # Scan options
 opt="$1"
@@ -1260,6 +1262,7 @@ while [ ! -z "$opt" ] && [ -z "${opt##-*}" ] ; do
     -largelun) scan_flags=$((scan_flags|0x200)) ;;
     -luns=*)  arg=${opt#-luns=};        lunsearch=$(expandlist "$arg") ;;
     -multipath) mp_enable=1 ;;
+    -no-lip-scan) no_lip_scan=1 ;;
     -nooptscan) optscan=0 ;;
     -nosync) sync=0 ;;
     -remove)      remove=1 ;;
@@ -1337,7 +1340,7 @@ elif [ $resize -eq 1 ] ; then
 else
   for host in $hosts; do
   echo -n "Scanning host $host "
-  if [ -e "/sys/class/fc_host/host$host" ] ; then
+  if [ $no_lip_scan -eq 0 ] && [ -e "/sys/class/fc_host/host$host" ] ; then
     # It's pointless to do a target scan on FC
     issue_lip=/sys/class/fc_host/host$host/issue_lip
     if [ -e "$issue_lip" ] && [ "$lipreset" -ge 0 ] ; then
-- 
2.27.0

