lszfcp: allow to show zfcp_units without associated SCSI device

Useful to detect configuration errors and FCP LUN typos.

Example:

$ lszfcp -De
0.0.3c80/0x500507630313d327/0xffffffffffffffff - failed

$ lszfcp -DeV
/sys/devices/css0/0.0.0222/0.0.3c80/0x500507630313d327/0xffffffffffffffff failed
-

$ lszfcp -Deam
0.0.3c80/0x500507630313d327/0xffffffffffffffff - failed
Class = "zfcp_unit"
    access_denied       = "0"
    access_readonly     = "0"
    access_shared       = "0"
    failed              = "1"
    in_recovery         = "0"
    status              = "0x00000000"

Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
Steffen Maier
2019-02-21 17:13:02 +01:00
committed by Jan Höppner
parent e84287e76e
commit f67758160e
2 changed files with 55 additions and 2 deletions

View File

@@ -344,7 +344,15 @@ show_devices()
SCSI_DEVICE_LIST=`ls -d $SYSFS/devices/css0/*/*/host[0-9]*/*/`
fi
if [ -z "$SCSI_DEVICE_LIST" ]; then
if $SHOW_EXTENDED; then
ZFCP_UNIT_LIST=$(ls -d \
$SYSFS/devices/css[0-9]*/[0-9d]*/[0-9]*/0x*/0x* \
2> /dev/null)
else
ZFCP_UNIT_LIST=""
fi
if [ -z "$SCSI_DEVICE_LIST" ] && [ -z "$ZFCP_UNIT_LIST" ]; then
if $SHOW_EXTENDED; then
echo "Error: No zfcp-attached SCSI devices found."
else
@@ -357,6 +365,20 @@ show_devices()
read WWPN < $SCSI_DEVICE_PATH/wwpn
read LUN < $SCSI_DEVICE_PATH/fcp_lun
# remove from ZFCP_UNIT_LIST if SCSI device exists
REDUCED_LIST=""
for UNIT_PATH in $ZFCP_UNIT_LIST; do
STRIPPED_PATH=$UNIT_PATH
L=${UNIT_PATH##*/}
STRIPPED_PATH=${STRIPPED_PATH%/*}
W=${STRIPPED_PATH##*/}
STRIPPED_PATH=${STRIPPED_PATH%/*}
A=${STRIPPED_PATH##*/}
[ "$A/$W/$L" = "$ADAPTER/$WWPN/$LUN" ] && continue
REDUCED_LIST="$REDUCED_LIST $UNIT_PATH"
done
ZFCP_UNIT_LIST="$REDUCED_LIST"
[ $LUN != ${PAR_LUN:-$LUN} ] && continue
[ $WWPN != ${PAR_WWPN:-$WWPN} ] && continue
[ $ADAPTER != ${PAR_BUSID:-$ADAPTER} ] && continue
@@ -426,6 +448,36 @@ show_devices()
echo
fi
done
# what's left in ZFCP_UNIT_LIST are now units without SCSI device
for UNIT_PATH in $ZFCP_UNIT_LIST; do
STRIPPED_PATH=$UNIT_PATH
LUN=${UNIT_PATH##*/}
STRIPPED_PATH=${STRIPPED_PATH%/*}
WWPN=${STRIPPED_PATH##*/}
STRIPPED_PATH=${STRIPPED_PATH%/*}
ADAPTER=${STRIPPED_PATH##*/}
[ $LUN != ${PAR_LUN:-$LUN} ] && continue
[ $WWPN != ${PAR_WWPN:-$WWPN} ] && continue
[ $ADAPTER != ${PAR_BUSID:-$ADAPTER} ] && continue
if [ $VERBOSITY -eq 0 ]; then
echo "$ADAPTER/$WWPN/$LUN - failed"
else
echo "$UNIT_PATH failed"
echo "-"
fi
if $SHOW_ATTRIBUTES && [ $SHOW_MORE_ATTRS -ge 1 ]; then
echo 'Class = "zfcp_unit"'
show_attributes "$UNIT_PATH"
fi
if $SHOW_ATTRIBUTES; then
echo
fi
done
}

View File

@@ -56,7 +56,8 @@ not
enumerated:
hosts that have never been online (since last bind to zfcp device driver),
hosts that are defunct (CHPID configured off, or z/VM detach),
ports with fc_rport port_state unequal to "Online" (such as fibres pulled).
ports with fc_rport port_state unequal to "Online" (such as fibres pulled),
zfcp units without associated SCSI device (unit_add of non-existent LUN).
.SH OPTIONS
.TP