- Added the following patch for bsc#1094354
- Added the following patches for bsc#1098069 * s390-tools-sles15-dbginfo-add-data-for-ps-cpprot.patch * s390-tools-sles15-mon_procd-fix-parsing-of-proc-pid-stat.patch * s390-tools-sles15-1-lstape-fix-output-with-SCSI-lin_tape-and-multiple-pa.patch * s390-tools-sles15-2-lstape-fix-to-prefer-sysfs-to-find-lin_tape-device-n.patch * s390-tools-sles15-3-lstape-fix-output-without-SCSI-generic-sg.patch * s390-tools-sles15-4-lsluns-fix-to-prevent-error-messages-if-there-are-no.patch * s390-tools-sles15-5-lstape-fix-to-prevent-error-messages-if-there-are-no.patch * s390-tools-sles15-6-lstape-fix-description-of-type-and-devbusid-filter-f.patch * s390-tools-sles15-7-lstape-fix-SCSI-output-description-in-man-page.patch * s390-tools-sles15-8-lstape-fix-SCSI-HBA-CCW-device-bus-ID-e.g.-for-virti.patch - dasd_reload: Fixed several syntax errors. Changed the script to ensure that the DASD volume are actually activated in device number order. If an old 51-dasd-<ccw>.rules file is found, rename it to obsolete-51-dasd-<ccw>.rules, and use chzdev to generate a new rules file. (bsc#1103407) - dasd_reload: Check for 41-dasd-<type>-<ccw>.rules in addition to the original 51-dasd-<ccw>.rules (bsc#1103407) - Removed s390 from the ExclusiveArch parameter (bsc#1102906) OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=54
This commit is contained in:
parent
7a618d686a
commit
cd557016ed
@ -0,0 +1,181 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape | 11 ++++-------
|
||||||
|
zconf/lstape.8 | 7 ++-----
|
||||||
|
2 files changed, 6 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lstape
|
||||||
|
+++ b/zconf/lstape
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
#
|
||||||
|
# lstape - Tool to show information about tape devices
|
||||||
|
#
|
||||||
|
-# Copyright IBM Corp. 2003, 2017
|
||||||
|
+# Copyright IBM Corp. 2003, 2018
|
||||||
|
#
|
||||||
|
# s390-tools is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the MIT license. See LICENSE for details.
|
||||||
|
@@ -55,7 +55,7 @@ function PrintVersion()
|
||||||
|
{
|
||||||
|
cat <<-EOD
|
||||||
|
$CMD: version %S390_TOOLS_VERSION%
|
||||||
|
- Copyright IBM Corp. 2003, 2017
|
||||||
|
+ Copyright IBM Corp. 2003, 2018
|
||||||
|
EOD
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -292,16 +292,13 @@ function SysfsCreateListSCSI()
|
||||||
|
TAPE_DEV=$CHG_IDX
|
||||||
|
fi
|
||||||
|
elif [ -r /proc/scsi/$DEV_NAME ]; then
|
||||||
|
- if [ "$TAPE_SERIAL" != "NO/INQ" ]; then
|
||||||
|
IBM_IDX=$(
|
||||||
|
- awk '$3 == "'$TAPE_SERIAL'"{
|
||||||
|
- print $1
|
||||||
|
- }' /proc/scsi/$DEV_NAME
|
||||||
|
+ grep -wF "$SCSI_ID" /proc/scsi/$DEV_NAME |
|
||||||
|
+ cut -d ' ' -f 1
|
||||||
|
)
|
||||||
|
if [ "$IBM_IDX" != "" ]; then
|
||||||
|
TAPE_DEV=$DEV_NAME$IBM_IDX
|
||||||
|
fi
|
||||||
|
- fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "$SCSIFORMAT" \
|
||||||
|
--- a/zconf/lstape.8
|
||||||
|
+++ b/zconf/lstape.8
|
||||||
|
@@ -1,8 +1,8 @@
|
||||||
|
-.\" Copyright 2017 IBM Corp.
|
||||||
|
+.\" Copyright 2017, 2018 IBM Corp.
|
||||||
|
.\" s390-tools is free software; you can redistribute it and/or modify
|
||||||
|
.\" it under the terms of the MIT license. See LICENSE for details.
|
||||||
|
.\"
|
||||||
|
-.TH LSTAPE 8 "Jul 2007" "s390-tools"
|
||||||
|
+.TH LSTAPE 8 "Jun 2018" "s390-tools"
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
lstape \- list tape devices.
|
||||||
|
@@ -34,9 +34,6 @@ lstape command tries to find out which o
|
||||||
|
and changer driver the device names start with "st" or "sch", while for the
|
||||||
|
IBM tape driver this would be "IBMtape" or "IBMchanger". If "N/A" is shown,
|
||||||
|
the correct driver could not be obtained.
|
||||||
|
-This happens for example if there is no sg_inq command installed which is
|
||||||
|
-required to read the drive's serial number which in turn is used to find out
|
||||||
|
-the device number of the IBM tape driver.
|
||||||
|
|
||||||
|
The serial number of a SCSI tape can be displayed with the --verbose option. If
|
||||||
|
there is no sg_inq command available "NO/INQ" is shown as the tape's serial.
|
@ -0,0 +1,144 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape | 17 +++++++++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
|
||||||
|
--- a/zconf/lstape
|
||||||
|
+++ b/zconf/lstape
|
||||||
|
@@ -291,6 +291,23 @@ function SysfsCreateListSCSI()
|
||||||
|
if [ "$CHG_IDX" != "" ]; then
|
||||||
|
TAPE_DEV=$CHG_IDX
|
||||||
|
fi
|
||||||
|
+ elif [ "$(echo "$SCSI_LIST"|grep lin_tape)" != "" ]; then
|
||||||
|
+ # bash glob sorts so IBMtape0 comes before IBMtape0n
|
||||||
|
+ local IBM_PATH=$(
|
||||||
|
+ ls -1d $SCSI_DEV/lin_tape/$DEV_NAME[0-9]* |
|
||||||
|
+ head -n 1)
|
||||||
|
+ if [ -d "$IBM_PATH" ]; then
|
||||||
|
+ IBM_IDX=${IBM_PATH##*/}
|
||||||
|
+ else
|
||||||
|
+ # deprecated sysfs layout
|
||||||
|
+ IBM_IDX=$(
|
||||||
|
+ echo "$SCSI_LIST" |
|
||||||
|
+ awk -F: '/lin_tape\:'"$DEV_NAME"'[0-9]+$/{print $NF}'
|
||||||
|
+ )
|
||||||
|
+ fi
|
||||||
|
+ if [ "$IBM_IDX" != "" ]; then
|
||||||
|
+ TAPE_DEV=$IBM_IDX
|
||||||
|
+ fi
|
||||||
|
elif [ -r /proc/scsi/$DEV_NAME ]; then
|
||||||
|
IBM_IDX=$(
|
||||||
|
grep -wF "$SCSI_ID" /proc/scsi/$DEV_NAME |
|
@ -0,0 +1,167 @@
|
|||||||
|
Subject: [PATCH] [BZ 170633] lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape | 12 ++++++++++--
|
||||||
|
zconf/lstape.8 | 8 +++++++-
|
||||||
|
2 files changed, 17 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lstape
|
||||||
|
+++ b/zconf/lstape
|
||||||
|
@@ -48,6 +48,9 @@ function PrintUsage() {
|
||||||
|
: -v|--version
|
||||||
|
: Display the version of the tools package and
|
||||||
|
: the lstape command.
|
||||||
|
+ :
|
||||||
|
+ :$(basename $0) without the --ccw-only option causes extra SAN traffic
|
||||||
|
+ :for each SCSI tape or changer device by invoking the sg_inq command.
|
||||||
|
EOD
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -249,11 +252,16 @@ function SysfsCreateListSCSI()
|
||||||
|
if [ -h $SG_DEV ]; then
|
||||||
|
# deprecated sysfs layout
|
||||||
|
SG_DEV=$(echo $SG_DEV | awk -F: '{print $NF}')
|
||||||
|
- else
|
||||||
|
+ elif [ -d $SCSI_DEV/scsi_generic ]; then
|
||||||
|
SG_DEV=$(basename $SG_DEV/*)
|
||||||
|
+ else
|
||||||
|
+ SG_DEV=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
- if [ "$SG_INQ" != "" ]; then
|
||||||
|
+ if [ -z "$SG_DEV" ]; then
|
||||||
|
+ SG_DEV="N/A"
|
||||||
|
+ TAPE_SERIAL="NO/SG"
|
||||||
|
+ elif [ "$SG_INQ" != "" ]; then
|
||||||
|
TAPE_SERIAL=$(
|
||||||
|
sg_inq /dev/$SG_DEV |
|
||||||
|
awk '/serial/{print $NF}'
|
||||||
|
--- a/zconf/lstape.8
|
||||||
|
+++ b/zconf/lstape.8
|
||||||
|
@@ -36,7 +36,13 @@ IBM tape driver this would be "IBMtape"
|
||||||
|
the correct driver could not be obtained.
|
||||||
|
|
||||||
|
The serial number of a SCSI tape can be displayed with the --verbose option. If
|
||||||
|
-there is no sg_inq command available "NO/INQ" is shown as the tape's serial.
|
||||||
|
+there is no sg_inq command available "NO/INQ" is shown as the serial number
|
||||||
|
+of the tape.
|
||||||
|
+If no SCSI generic (sg) kernel support is available, "NO/SG" is shown
|
||||||
|
+as the serial number of the tape and "N/A" for the "Generic" column.
|
||||||
|
+
|
||||||
|
+The lstape command without the --ccw-only option causes extra SAN traffic
|
||||||
|
+for each SCSI tape or changer device by invoking the sg_inq command.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP 8
|
@ -0,0 +1,177 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lsluns | 14 +++++++++-----
|
||||||
|
zconf/lsluns.8 | 5 ++---
|
||||||
|
2 files changed, 11 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lsluns
|
||||||
|
+++ b/zconf/lsluns
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
#
|
||||||
|
# lsluns - list LUNs discovered in the FC SAN, or show encryption state of attached LUNs
|
||||||
|
#
|
||||||
|
-# Copyright IBM Corp. 2008, 2017
|
||||||
|
+# Copyright IBM Corp. 2008, 2018
|
||||||
|
#
|
||||||
|
# s390-tools is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the MIT license. See LICENSE for details.
|
||||||
|
@@ -152,6 +152,11 @@ sub get_lun_hash
|
||||||
|
my %lun_hash;
|
||||||
|
|
||||||
|
foreach my $device (</$sg_dir/sg*>) {
|
||||||
|
+ # skip non-zfcp SCSI devices and avoid file access error messages
|
||||||
|
+ next unless -r "$device/device/fcp_lun";
|
||||||
|
+ next unless -r "$device/device/wwpn";
|
||||||
|
+ next unless -r "$device/device/hba_id";
|
||||||
|
+
|
||||||
|
my $l = `cat $device/device/fcp_lun`;
|
||||||
|
my $p = `cat $device/device/wwpn`;
|
||||||
|
my $a = `cat $device/device/hba_id`;
|
||||||
|
@@ -170,9 +175,8 @@ sub get_lun_hash
|
||||||
|
sub lsluns_usage {
|
||||||
|
print <<EOD;
|
||||||
|
Usage:
|
||||||
|
-This tool is designed for environments where all SCSI devices are attached
|
||||||
|
-through the zfcp device driver. Expect error messages in mixed environments
|
||||||
|
-such as with iSCSI.
|
||||||
|
+This tool is designed for environments with SCSI devices attached
|
||||||
|
+through the zfcp device driver.
|
||||||
|
|
||||||
|
$PROGRAM_NAME [-c <busid>] ... [-p <wwpn>] ... [-h] [-v]
|
||||||
|
|
||||||
|
@@ -220,7 +224,7 @@ EOD
|
||||||
|
|
||||||
|
sub lsluns_version {
|
||||||
|
print "$PROGRAM_NAME: version %S390_TOOLS_VERSION%\n";
|
||||||
|
- print "Copyright IBM Corp. 2008, 2017\n";
|
||||||
|
+ print "Copyright IBM Corp. 2008, 2018\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub lsluns_invalid_usage {
|
||||||
|
--- a/zconf/lsluns.8
|
||||||
|
+++ b/zconf/lsluns.8
|
||||||
|
@@ -28,9 +28,8 @@ zfcp-attached LUNs
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.PP
|
||||||
|
-This tool is designed for environments where all SCSI devices are attached
|
||||||
|
-through the zfcp device driver. Expect error messages in mixed environments
|
||||||
|
-such as with iSCSI.
|
||||||
|
+This tool is designed for environments with SCSI devices attached
|
||||||
|
+through the zfcp device driver.
|
||||||
|
|
||||||
|
.B lsluns
|
||||||
|
lists all logical unit numbers (LUNs) discovered in the
|
@ -0,0 +1,136 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape | 8 ++++++--
|
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lstape
|
||||||
|
+++ b/zconf/lstape
|
||||||
|
@@ -335,9 +335,13 @@ function SysfsCreateListSCSI()
|
||||||
|
$STATE
|
||||||
|
|
||||||
|
if $VERBOSE; then
|
||||||
|
+ HBA_ID="N/A"
|
||||||
|
+ [ -r $SCSI_DEV/hba_id ] && HBA_ID=$(cat $SCSI_DEV/hba_id)
|
||||||
|
+ WWPN="N/A"
|
||||||
|
+ [ -r $SCSI_DEV/wwpn ] && WWPN=$(cat $SCSI_DEV/wwpn)
|
||||||
|
printf "$SCSIVFORMAT" \
|
||||||
|
- $(cat $SCSI_DEV/hba_id) \
|
||||||
|
- $(cat $SCSI_DEV/wwpn) \
|
||||||
|
+ "$HBA_ID" \
|
||||||
|
+ "$WWPN" \
|
||||||
|
$TAPE_SERIAL
|
||||||
|
fi
|
||||||
|
done
|
@ -0,0 +1,147 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape.8 | 10 +++++++---
|
||||||
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lstape.8
|
||||||
|
+++ b/zconf/lstape.8
|
||||||
|
@@ -20,6 +20,8 @@ lstape \- list tape devices.
|
||||||
|
.br
|
||||||
|
.RB [ -t
|
||||||
|
.IR <device-type> [, <device-type> ] "" ...]
|
||||||
|
+.br
|
||||||
|
+.RI [ <device-bus-ID> ...]
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
The lstape command lists all available tape devices on the current host. For
|
||||||
|
@@ -78,12 +80,14 @@ on the output of SCSI devices.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.BR -t | --type " \fI<device-type>\fR"
|
||||||
|
-Limit output to given device types (currently only applies to channel attached
|
||||||
|
+Limit output to given device types, for example 3490
|
||||||
|
+(currently only applies to channel-attached
|
||||||
|
tape devices).
|
||||||
|
|
||||||
|
.TP
|
||||||
|
-\fB<device-type>\fR =
|
||||||
|
-Device type of devices that should be displayed (e.g. 3490).
|
||||||
|
+.I <device-bus-ID>
|
||||||
|
+Limits the output to information about the specified tape device or
|
||||||
|
+devices only. For CCW-attached devices only.
|
||||||
|
|
||||||
|
.SH EXAMPLES
|
||||||
|
\fBlstape\fR
|
@ -0,0 +1,206 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape.8 | 68 +++++++++++++++++++++++++++++++++++++++++++++------------
|
||||||
|
1 file changed, 54 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lstape.8
|
||||||
|
+++ b/zconf/lstape.8
|
||||||
|
@@ -29,20 +29,6 @@ channel attached tape devices this outpu
|
||||||
|
/proc/tapedevices (which is obsolete) but also includes offline devices. By
|
||||||
|
default all tape devices are displayed.
|
||||||
|
|
||||||
|
-Since SCSI tape devices are accessed differently to channel attached tape
|
||||||
|
-devices they are only visible if they are known to the SCSI layer. There
|
||||||
|
-are at least two possible drivers that can claim a SCSI tape device and the
|
||||||
|
-lstape command tries to find out which one this is. For the generic tape
|
||||||
|
-and changer driver the device names start with "st" or "sch", while for the
|
||||||
|
-IBM tape driver this would be "IBMtape" or "IBMchanger". If "N/A" is shown,
|
||||||
|
-the correct driver could not be obtained.
|
||||||
|
-
|
||||||
|
-The serial number of a SCSI tape can be displayed with the --verbose option. If
|
||||||
|
-there is no sg_inq command available "NO/INQ" is shown as the serial number
|
||||||
|
-of the tape.
|
||||||
|
-If no SCSI generic (sg) kernel support is available, "NO/SG" is shown
|
||||||
|
-as the serial number of the tape and "N/A" for the "Generic" column.
|
||||||
|
-
|
||||||
|
The lstape command without the --ccw-only option causes extra SAN traffic
|
||||||
|
for each SCSI tape or changer device by invoking the sg_inq command.
|
||||||
|
|
||||||
|
@@ -89,6 +75,55 @@ tape devices).
|
||||||
|
Limits the output to information about the specified tape device or
|
||||||
|
devices only. For CCW-attached devices only.
|
||||||
|
|
||||||
|
+.SH OUTPUT FIELDS FOR SCSI TAPE/CHANGER DEVICES
|
||||||
|
+.TP
|
||||||
|
+.B Generic
|
||||||
|
+SCSI generic device file for the tape drive, for example /dev/sg0.
|
||||||
|
+"N/A" if the SCSI generic (sg) kernel functionality is not available.
|
||||||
|
+.TP
|
||||||
|
+.B Device
|
||||||
|
+Main character device node file for accessing the tape drive or medium changer.
|
||||||
|
+SCSI tape devices are only visible if they are known to the SCSI layer. There
|
||||||
|
+are at least two possible drivers that can claim a SCSI tape device. The
|
||||||
|
+lstape command tries to determine the device driver. For the generic tape
|
||||||
|
+and changer driver the device names start with "st" or "sch", while for the
|
||||||
|
+IBM tape driver this would be "IBMtape" or "IBMchanger". If "N/A" is shown,
|
||||||
|
+the device driver could not be determined.
|
||||||
|
+.TP
|
||||||
|
+.B Target
|
||||||
|
+Linux SCSI device name in H:C:T:L format.
|
||||||
|
+.TP
|
||||||
|
+.B Vendor
|
||||||
|
+The vendor field from the SCSI device.
|
||||||
|
+.TP
|
||||||
|
+.B Model
|
||||||
|
+The model field from the SCSI device.
|
||||||
|
+.TP
|
||||||
|
+.B Type
|
||||||
|
+"tapedrv" for a tape drive or "changer" for a medium changer.
|
||||||
|
+.TP
|
||||||
|
+.B State
|
||||||
|
+The state of the SCSI device object in the kernel.
|
||||||
|
+Any state other than "running" can indicate problems.
|
||||||
|
+
|
||||||
|
+.PP
|
||||||
|
+
|
||||||
|
+For SCSI devices, the --verbose option additionally displays:
|
||||||
|
+.TP
|
||||||
|
+.B HBA
|
||||||
|
+The device bus-ID of the FCP device
|
||||||
|
+through which the tape drive is attached.
|
||||||
|
+"N/A" if device is not attached through zfcp.
|
||||||
|
+.TP
|
||||||
|
+.B WWPN
|
||||||
|
+The WWPN (worldwide port name) of the tape drive in the SAN.
|
||||||
|
+"N/A" if device is not attached through zfcp.
|
||||||
|
+.TP
|
||||||
|
+.B Serial
|
||||||
|
+The serial number.
|
||||||
|
+"NO/INQ" if there is no sg_inq command available.
|
||||||
|
+"NO/SG" if no SCSI generic (sg) kernel support is available.
|
||||||
|
+
|
||||||
|
.SH EXAMPLES
|
||||||
|
\fBlstape\fR
|
||||||
|
.RS
|
||||||
|
@@ -99,3 +134,8 @@ List all tape devices that are available
|
||||||
|
.RS
|
||||||
|
Show all 3490 CCW devices that are online.
|
||||||
|
.RE
|
||||||
|
+
|
||||||
|
+\fBlstape --scsi-only --verbose\fR
|
||||||
|
+.RS
|
||||||
|
+Show all SCSI tape or changer devices with maximum information.
|
||||||
|
+.RE
|
@ -0,0 +1,173 @@
|
|||||||
|
Subject: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
From: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: lstape, lsluns: handle non-zfcp; lin_tape multiple paths
|
||||||
|
|
||||||
|
Symptom: lstape shows unexpected additional Device suffix numbers in
|
||||||
|
excess output columns for each additional path of the same
|
||||||
|
tape/changer driven by the IBM lin_tape device driver
|
||||||
|
(independent of actual path failover enablement in lin_tape).
|
||||||
|
It also shows a wrong number of found devices in the header
|
||||||
|
(without --scsi-only).
|
||||||
|
|
||||||
|
lstape prints error about "Unexpected extra argument:" and the
|
||||||
|
usage for "sg_inq" along with wrong tabular output.
|
||||||
|
|
||||||
|
lsluns prints ENOENT error text for "cat" on SCSI device sysfs
|
||||||
|
attributes hba_id, wwpn, and fcp_lun.
|
||||||
|
|
||||||
|
lstape with --verbose option prints ENOENT error text for
|
||||||
|
"cat" on SCSI device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
lstape man page: Description of --type and <devbusid> filter
|
||||||
|
for channel tapes is incomplete. SCSI output description is
|
||||||
|
incomplete.
|
||||||
|
|
||||||
|
lstape shows "N/A" instead of the HBA device bus-ID with
|
||||||
|
virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Problem: s390-tools-1.8.0 before the first upstream commit b627b8d8e1ab
|
||||||
|
("Initial s390-tools-2.0.0 import") introduced SCSI
|
||||||
|
tape/changer output for lstape. It used the SCSI device serial
|
||||||
|
number as lookup key to find a match in IBM lin_tape device
|
||||||
|
driver proc-fs output for a given SCSI device name. Multiple
|
||||||
|
paths to the same tape/changer have the same serial number.
|
||||||
|
Multiple matches cause excess arguments to printf. Explaining
|
||||||
|
the resulting output, the bash man page says: "The format is
|
||||||
|
reused as necessary to consume all of the arguments." This
|
||||||
|
also causes a wrong number of found devices.
|
||||||
|
|
||||||
|
The default bash settings have nullglob disabled so if
|
||||||
|
$SCSI_DEV/scsi_generic* aka
|
||||||
|
/sys/bus/scsi/devices/*:*:*:*/scsi_generic* does not match
|
||||||
|
anything, it leaves the glob pattern unmodified and
|
||||||
|
SG_DEV=$(basename $SG_DEV/*) results in the literal "*". If
|
||||||
|
$SG_INQ exists, it invoked sg_inq with more than the one
|
||||||
|
allowed positional argument for a SCSI generic device node
|
||||||
|
"sg_inq /dev/*". Causing error messages and the usage of
|
||||||
|
sg_inq to land in $TAPE_SERIAL.
|
||||||
|
|
||||||
|
lsluns iterates SCSI generic devices and unconditionally
|
||||||
|
reads zfcp-specific SCSI device sysfs attributes hba_id, wwpn,
|
||||||
|
and fcp_lun.
|
||||||
|
|
||||||
|
lstape --verbose unconditionally reads zfcp-specific SCSI
|
||||||
|
device sysfs attributes hba_id and wwpn.
|
||||||
|
|
||||||
|
<devbusid> filter missing from synopsis. <device-type> example
|
||||||
|
at wrong place with <devbusid> filter. <devbusid> filter
|
||||||
|
option description is a duplicate of <device-type> filter
|
||||||
|
option description. SCSI output description misses fields.
|
||||||
|
|
||||||
|
Lstape only used the zfcp-specific sysfs attribute hba_id.
|
||||||
|
|
||||||
|
Solution: Prefer sysfs to find lin_tape device name for SCSI device.
|
||||||
|
Fallback: The lin_tape proc-fs output format has changed over
|
||||||
|
the years. The HBA device driver string can contain whitespace
|
||||||
|
(e.g. "Virtio SCSI HBA") and breaks the field numbers with
|
||||||
|
tokenized parsing. Grep for the SCSI device name as word (to
|
||||||
|
skip names with same substring, such as 0:0:1:1 also matching
|
||||||
|
0:0:1:10) and cut the first field 'Number' (lin_tape device
|
||||||
|
name suffix). If there is no SCSI column at all [lin_tape
|
||||||
|
before v2.2.0] (and no SCSI LLDD or other column with a name
|
||||||
|
accidentally matching an existing SCSI device name), we get no
|
||||||
|
match and better bail out with the initialized "N/A" for the
|
||||||
|
lstape column "Device".
|
||||||
|
|
||||||
|
To not have to rely on the nullglob setting, explicitly check
|
||||||
|
for the existence of $SCSI_DEV/scsi_generic before evaluating
|
||||||
|
SG_DEV=$(basename $SG_DEV/*). Also handle availability of
|
||||||
|
sg_inq but absence of scsi_generic individually to provide the
|
||||||
|
user with a hint if only sg is missing.
|
||||||
|
|
||||||
|
Simply skip non-zfcp SCSI devices, such as iSCSI or
|
||||||
|
virtio-scsi-ccw, to not erroneously access absent attributes.
|
||||||
|
|
||||||
|
Assume "N/A" for HBA and WWPN of non-zfcp SCSI devices, such
|
||||||
|
as iSCSI or virtio-scsi-ccw, to not erroneously access absent
|
||||||
|
zfcp-specific sysfs attributes.
|
||||||
|
|
||||||
|
Add <devbusid> filter to synopsis. Move <device-type> example
|
||||||
|
to <device-type> option. Replace <devbusid> filter option
|
||||||
|
description. Move existing SCSI output description to a new
|
||||||
|
subsection and add description of missing fields.
|
||||||
|
|
||||||
|
Also search sysfs for an ancestor with subsystem ccw.
|
||||||
|
|
||||||
|
Reproduction: Attach more than one path to the same SCSI tape or changer and
|
||||||
|
load the IBM lin_tape device driver.
|
||||||
|
|
||||||
|
Unload sg kernel module.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
Attach non-zfcp SCSI devices such as iSCSI or virtio-scsi-ccw.
|
||||||
|
|
||||||
|
man lstape
|
||||||
|
|
||||||
|
Attach SCSI tape or changer with virtio-scsi-ccw to a KVM
|
||||||
|
guest and run "lstape --verbose".
|
||||||
|
|
||||||
|
Upstream-ID: -
|
||||||
|
Problem-ID: 170633
|
||||||
|
|
||||||
|
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lstape | 25 +++++++++++++++++++++++--
|
||||||
|
zconf/lstape.8 | 3 ++-
|
||||||
|
2 files changed, 25 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/zconf/lstape
|
||||||
|
+++ b/zconf/lstape
|
||||||
|
@@ -223,6 +223,24 @@ function SysfsCreateListCCW() {
|
||||||
|
' | sort
|
||||||
|
}
|
||||||
|
|
||||||
|
+# handle SCSI device not necessarily zfcp-attached, e.g. virtio-scsi-ccw
|
||||||
|
+function SCSISearchCCWBusid()
|
||||||
|
+{
|
||||||
|
+ local SCSI_DEV=$1
|
||||||
|
+ local SDEVCAN=$(readlink -e $SCSI_DEV)
|
||||||
|
+ while [ -n "$SDEVCAN" ]; do
|
||||||
|
+ # ascend to parent: strip last path part
|
||||||
|
+ SDEVCAN=${SDEVCAN%/*}
|
||||||
|
+ [ -h $SDEVCAN/subsystem ] || continue
|
||||||
|
+ local SUBSYSTEM=$(readlink -e $SDEVCAN/subsystem)
|
||||||
|
+ if [ "${SUBSYSTEM##*/}" = "ccw" ]; then
|
||||||
|
+ echo ${SDEVCAN##*/}
|
||||||
|
+ return
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+ echo "N/A"
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
function SysfsCreateListSCSI()
|
||||||
|
{
|
||||||
|
for SCSI_DEV in $1/bus/scsi/devices/*:*:*:*; do
|
||||||
|
@@ -335,8 +353,11 @@ function SysfsCreateListSCSI()
|
||||||
|
$STATE
|
||||||
|
|
||||||
|
if $VERBOSE; then
|
||||||
|
- HBA_ID="N/A"
|
||||||
|
- [ -r $SCSI_DEV/hba_id ] && HBA_ID=$(cat $SCSI_DEV/hba_id)
|
||||||
|
+ if [ -r $SCSI_DEV/hba_id ]; then
|
||||||
|
+ HBA_ID=$(cat $SCSI_DEV/hba_id)
|
||||||
|
+ else
|
||||||
|
+ HBA_ID=$(SCSISearchCCWBusid $SCSI_DEV)
|
||||||
|
+ fi
|
||||||
|
WWPN="N/A"
|
||||||
|
[ -r $SCSI_DEV/wwpn ] && WWPN=$(cat $SCSI_DEV/wwpn)
|
||||||
|
printf "$SCSIVFORMAT" \
|
||||||
|
--- a/zconf/lstape.8
|
||||||
|
+++ b/zconf/lstape.8
|
||||||
|
@@ -112,8 +112,9 @@ For SCSI devices, the --verbose option a
|
||||||
|
.TP
|
||||||
|
.B HBA
|
||||||
|
The device bus-ID of the FCP device
|
||||||
|
+or of the virtio-scsi-ccw virtual HBA
|
||||||
|
through which the tape drive is attached.
|
||||||
|
-"N/A" if device is not attached through zfcp.
|
||||||
|
+"N/A" if the device does not have a sysfs ancestor with subsystem ccw.
|
||||||
|
.TP
|
||||||
|
.B WWPN
|
||||||
|
The WWPN (worldwide port name) of the tape drive in the SAN.
|
@ -1,21 +1,41 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 24 18:47:06 UTC 2018 - mpost@suse.com
|
Fri Aug 31 18:57:54 UTC 2018 - mpost@suse.com
|
||||||
|
|
||||||
- dasd_reload:
|
- Added the following patch for bsc#1094354
|
||||||
* Fixed several syntax errors.
|
|
||||||
* Changed the script to ensure that the DASD volume are actually
|
|
||||||
activated in device number order.
|
|
||||||
* Check for 41-dasd-<type>-<ccw>.rules in addition to the
|
|
||||||
original 51-dasd-<ccw>.rules. If an old 51-dasd-<ccw>.rules
|
|
||||||
file is found, rename it to obsolete-51-dasd-<ccw>.rules, and
|
|
||||||
use chzdev to generate a new rules file. (bsc#1103407)
|
|
||||||
- Added the following patches for bsc#1098069:
|
|
||||||
* s390-tools-sles15-dbginfo-add-data-for-ps-cpprot.patch
|
|
||||||
* s390-tools-sles15-mon_procd-fix-parsing-of-proc-pid-stat.patch
|
|
||||||
- Added the following patch (bsc#1094354)
|
|
||||||
* customize-zdev-root-update-script.patch
|
* customize-zdev-root-update-script.patch
|
||||||
- Modified ctc_configure to not pass a "protcol=" parameter when
|
- Modified ctc_configure to not pass a "protcol=" parameter when
|
||||||
configuring LCS devices. (bsc#1096520)
|
configuring LCS devices. (bsc#1096520)
|
||||||
|
- Added the following patches for bsc#1098069
|
||||||
|
* s390-tools-sles15-dbginfo-add-data-for-ps-cpprot.patch
|
||||||
|
* s390-tools-sles15-mon_procd-fix-parsing-of-proc-pid-stat.patch
|
||||||
|
* s390-tools-sles15-1-lstape-fix-output-with-SCSI-lin_tape-and-multiple-pa.patch
|
||||||
|
* s390-tools-sles15-2-lstape-fix-to-prefer-sysfs-to-find-lin_tape-device-n.patch
|
||||||
|
* s390-tools-sles15-3-lstape-fix-output-without-SCSI-generic-sg.patch
|
||||||
|
* s390-tools-sles15-4-lsluns-fix-to-prevent-error-messages-if-there-are-no.patch
|
||||||
|
* s390-tools-sles15-5-lstape-fix-to-prevent-error-messages-if-there-are-no.patch
|
||||||
|
* s390-tools-sles15-6-lstape-fix-description-of-type-and-devbusid-filter-f.patch
|
||||||
|
* s390-tools-sles15-7-lstape-fix-SCSI-output-description-in-man-page.patch
|
||||||
|
* s390-tools-sles15-8-lstape-fix-SCSI-HBA-CCW-device-bus-ID-e.g.-for-virti.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 7 04:44:12 UTC 2018 - mpost@suse.com
|
||||||
|
|
||||||
|
- dasd_reload: Fixed several syntax errors. Changed the script to
|
||||||
|
ensure that the DASD volume are actually activated in device
|
||||||
|
number order. If an old 51-dasd-<ccw>.rules file is found,
|
||||||
|
rename it to obsolete-51-dasd-<ccw>.rules, and use chzdev to
|
||||||
|
generate a new rules file. (bsc#1103407)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Aug 6 12:42:14 CEST 2018 - hare@suse.de
|
||||||
|
|
||||||
|
- dasd_reload: Check for 41-dasd-<type>-<ccw>.rules in addition
|
||||||
|
to the original 51-dasd-<ccw>.rules (bsc#1103407)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 27 17:56:14 UTC 2018 - mpost@suse.com
|
||||||
|
|
||||||
|
- Removed s390 from the ExclusiveArch parameter (bsc#1102906)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed May 30 10:22:01 CEST 2018 - hare@suse.de
|
Wed May 30 10:22:01 CEST 2018 - hare@suse.de
|
||||||
|
@ -143,10 +143,19 @@ Patch32: s390-tools-sles15-zdev-Fix-zdev-dracut-module-aborting-on-unknow
|
|||||||
Patch33: s390-tools-sles15-hmcdrvfs-fix-parsing-of-link-count.patch
|
Patch33: s390-tools-sles15-hmcdrvfs-fix-parsing-of-link-count.patch
|
||||||
Patch34: s390-tools-sles15-dbginfo-add-data-for-ps-cpprot.patch
|
Patch34: s390-tools-sles15-dbginfo-add-data-for-ps-cpprot.patch
|
||||||
Patch35: s390-tools-sles15-mon_procd-fix-parsing-of-proc-pid-stat.patch
|
Patch35: s390-tools-sles15-mon_procd-fix-parsing-of-proc-pid-stat.patch
|
||||||
Patch36: customize-zdev-root-update-script.patch
|
Patch36: s390-tools-sles15-1-lstape-fix-output-with-SCSI-lin_tape-and-multiple-pa.patch
|
||||||
|
Patch37: s390-tools-sles15-2-lstape-fix-to-prefer-sysfs-to-find-lin_tape-device-n.patch
|
||||||
|
Patch38: s390-tools-sles15-3-lstape-fix-output-without-SCSI-generic-sg.patch
|
||||||
|
Patch39: s390-tools-sles15-4-lsluns-fix-to-prevent-error-messages-if-there-are-no.patch
|
||||||
|
Patch40: s390-tools-sles15-5-lstape-fix-to-prevent-error-messages-if-there-are-no.patch
|
||||||
|
Patch41: s390-tools-sles15-6-lstape-fix-description-of-type-and-devbusid-filter-f.patch
|
||||||
|
Patch42: s390-tools-sles15-7-lstape-fix-SCSI-output-description-in-man-page.patch
|
||||||
|
Patch43: s390-tools-sles15-8-lstape-fix-SCSI-HBA-CCW-device-bus-ID-e.g.-for-virti.patch
|
||||||
|
|
||||||
|
Patch999: customize-zdev-root-update-script.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
ExclusiveArch: s390 s390x
|
ExclusiveArch: s390x
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains the tools needed to use Linux on IBM z Systems
|
This package contains the tools needed to use Linux on IBM z Systems
|
||||||
@ -236,6 +245,15 @@ to list files and directories.
|
|||||||
%patch34 -p1
|
%patch34 -p1
|
||||||
%patch35 -p1
|
%patch35 -p1
|
||||||
%patch36 -p1
|
%patch36 -p1
|
||||||
|
%patch37 -p1
|
||||||
|
%patch38 -p1
|
||||||
|
%patch39 -p1
|
||||||
|
%patch40 -p1
|
||||||
|
%patch41 -p1
|
||||||
|
%patch42 -p1
|
||||||
|
%patch43 -p1
|
||||||
|
|
||||||
|
%patch999 -p1
|
||||||
|
|
||||||
cp -vi %{S:22} CAUTION
|
cp -vi %{S:22} CAUTION
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user