moving comment #1 to bug description

** Description changed:

- Description will follow....
+ 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".
+ 
+ This fix will be introduced with s390-tools 2.7.0
+ 
+ https://github.com/ibm-s390-tools/s390-tools/commits/master
+ 
+ Following git-commits are required
+ ef4dc7a45b1b80c58076a0a317245569d84b2754
+ cdc787db1ba17dd2c0ed841fd7443bc32be63b65
+ 80e0c41b896e1eeffc594416b4c2787ed29363b6
+ eba744a25edcc7202068c1d46fd99d4c98c1acf2
+ 4cf8f5f46c0f80b49a2a70854372289c3fda932b
+ b9b3d2d23069e021693a251a3aadd4eefc30e6ea
+ 34260f17360f1034c562c941b0f879c2204e40b7
+ d5291eed1c46e1c97831e771b2975575ba268992

** Also affects: ubuntu-z-systems
   Importance: Undecided
       Status: New

** Changed in: ubuntu-z-systems
       Status: New => Triaged

** Changed in: ubuntu-z-systems
   Importance: Undecided => Medium

** Changed in: ubuntu-z-systems
     Assignee: (unassigned) => Canonical Foundations Team 
(canonical-foundations)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1790831

Title:
  lstape, lsluns: handle non-zfcp; lin_tape multiple paths

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1790831/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to