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