summaryrefslogtreecommitdiff
path: root/rules.d
diff options
context:
space:
mode:
authorDavid Bond <dbond@suse.com>2022-03-08 10:41:39 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-03-08 23:12:10 +0900
commite92a3d8fa3c554f807ddbcd7fc00821868fd8a62 (patch)
tree661d68c0012f5bc6fdca18fd0e75f0c6a551eb56 /rules.d
parent6c5f368646c5de893d5cf05eb9a4a3892bc8228d (diff)
downloadsystemd-e92a3d8fa3c554f807ddbcd7fc00821868fd8a62.tar.gz
udev: 60-persistent-storage-tape.rules: handle duplicate device ID
Some SCSI tape devices use the same device ID (NAA registered device designator) for the SCSI tape changer device and the first actual tape device. For example, this one: https://docs.oracle.com/en/storage/tape-storage/storagetek-sl150-modular-tape-library/slofs/bridged-tape-drives.html You must connect the bridged drive to an HBA supporting multiple LUNs (also referred to as LUN scanning). The SL150 Library uses a single SCSI ID and two logical unit numbers (LUN). LUN 0 controls the tape drive and LUN 1 which is configured as a SCSI medium changer device controls the robotics. Data is sent to the remaining LUN on the bridged drive or to LUNs on the other, unbridged drives in the partition, all of which are configured as SCSI sequential-access (tape) devices. This may lead to errors because /dev/tape/by-id symlinks may sometimes point to the st device representing the tape, and sometimes to the sg device representing the changer. Fix this by assigning an increased priority to the tape device, and creating a separate -changer link for the SCSI tape changer. Co-developed-by: Martin Wilck <mwilck@suse.com>
Diffstat (limited to 'rules.d')
-rw-r--r--rules.d/60-persistent-storage-tape.rules4
1 files changed, 2 insertions, 2 deletions
diff --git a/rules.d/60-persistent-storage-tape.rules b/rules.d/60-persistent-storage-tape.rules
index 0136140a46..607e51ae2a 100644
--- a/rules.d/60-persistent-storage-tape.rules
+++ b/rules.d/60-persistent-storage-tape.rules
@@ -7,7 +7,7 @@ ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_t
# type 8 devices are "Medium Changers"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $devnode", \
- SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL}"
+ SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL} tape/by-id/scsi-$env{ID_SERIAL}-changer"
# iSCSI devices from the same host have all the same ID_SERIAL,
# but additionally a property named ID_SCSI_SERIAL.
@@ -23,7 +23,7 @@ KERNEL=="st*[0-9]|nst*[0-9]", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ie
KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", KERNELS=="[0-9]*:*[0-9]", ENV{.BSG_DEV}="$root/bsg/$id"
KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --whitelisted --export --device=$env{.BSG_DEV}", ENV{ID_BUS}="scsi"
-KERNEL=="st*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
+KERNEL=="st*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}", OPTIONS+="link_priority=10"
KERNEL=="st*[0-9]", ENV{ID_SCSI_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SCSI_SERIAL}"
KERNEL=="nst*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-nst"
KERNEL=="nst*[0-9]", ENV{ID_SCSI_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SCSI_SERIAL}-nst"