#!/bin/bash
#
# bfa_lun_scan
# Version : 1.0
#
# Script to perform LUN scanning on given HBA(s) or on all HBAs.
#
# For Brocade Fibre Channel Host Bus Adapters.                              
# Copyright (C) 2003-2009 Brocade.  All rights reserved.        
#                                                               

if [ ! -d /sys/class/scsi_host ];
then
	echo "BFA: invalid operating system version"
	exit 0
fi

if [ $# -eq 0 -o "$1" = "--help" -o "$1" = "-h" ] ; then
	echo "Usage: bfa_lun_scan    [ scsi_host_number1 [scsi_host_number2] | all ]"
	echo ""
	echo "    Example:"
	echo "    bfa_lun_scan    16		: Scan for luns on SCSI host number 16"
	echo "    bfa_lun_scan    16 17 18	: Scan for luns on SCSI host numbers 16 17 and 18"
	echo "    bfa_lun_scan    all		: Scan for luns on all SCSI host numbers"
	echo ""
    exit 1
fi

hosts=$*;

if [ "$hosts" == "all" ] ; then
	hosts=`ls -1 -d /sys/bus/pci/drivers/bfa/*/host* 2>/dev/null | sed -e "s/.*host//"`
	vhosts=`ls -1 -d /sys/bus/pci/drivers/bfa/*/host*/host* 2>/dev/null | sed -e "s/.*host//"`
	if [ "${vhosts}" == "" ]; then
		vhosts=`ls -1 -d /sys/bus/pci/drivers/bfa/*/host*/vport-*/host* 2>/dev/null | sed -e "s/.*host//"`
	fi
	
	hosts="$hosts $vhosts"
fi 

echo ""
echo "Scanning for new LUNs....."
echo ""

for host in $hosts ; do
	if [ ! -e /sys/class/scsi_host/host$host ];
    then
		echo "Error: Unable to find HBA instance with SCSI host number : $host"
	else
		echo Scanning HBA instance with SCSI host number : $host;
		echo '- - -' > /sys/class/scsi_host/host$host/scan
	fi
done

echo ""
echo "Done."
echo ""

