c2dfb7
From f60e89ea4c38c11a9d0c1e642c0a78faa32aca56 Mon Sep 17 00:00:00 2001
c2dfb7
From: Joerg Steffens <joerg.steffens@bareos.com>
c2dfb7
Date: Tue, 21 Nov 2017 12:21:49 +0100
c2dfb7
Subject: [PATCH] udev-rules: make tape-changers also apprear in
c2dfb7
 /dev/tape/by-path/
c2dfb7
c2dfb7
It is important to be able to access tape changer ("Medium Changers") by
c2dfb7
persistant name.
c2dfb7
While tape devices can be accessed via /dev/tape/by-id/ and
c2dfb7
/dev/tape/by-path/, tape-changers could only be accessed by
c2dfb7
/dev/tape/by-id/.
c2dfb7
However, in some cases, especially when accessing Amazon Webservice
c2dfb7
Storage Gateway VTLs (or accessing iSCSI VTLs in general?) this does not
c2dfb7
work, as all tape devices and the tape changer have the same ENV{ID_SERIAL}.
c2dfb7
The results is, that only the last device is available in
c2dfb7
/dev/tape/by-id/, as the former devices have been overwritten.
c2dfb7
c2dfb7
As this behavior is hard to change without breaking consistentcy,
c2dfb7
this additional device in /dev/tape/by-path/ can be used to access the medium changes.
c2dfb7
The tape devices can also be accessed by this path.
c2dfb7
c2dfb7
The content of the directory will now look like:
c2dfb7
c2dfb7
  # SCSI tape device, rewind (unchanged)
c2dfb7
  /dev/tape/by-path/$env{ID_PATH} -> ../../st*
c2dfb7
c2dfb7
  # SCSI tape device, no-rewind (unchanged)
c2dfb7
  /dev/tape/by-path/$env{ID_PATH}-nst -> ../../nst*
c2dfb7
c2dfb7
  # SCSI tape changer device (newly added)
c2dfb7
  /dev/tape/by-path/$env{ID_PATH}-changer -> ../../sg*
c2dfb7
c2dfb7
Tape devices and tape changer have different ID_PATHs.
c2dfb7
SCSI tape changer get the suffix "-changer"
c2dfb7
to make them better distinguishable from tape devices.
c2dfb7
c2dfb7
(cherry picked from commit 7f8ddf96a25162f06bd94a684cf700c128d18142)
c2dfb7
c2dfb7
Resolves: #1820112
c2dfb7
---
c2dfb7
 rules/60-persistent-storage-tape.rules | 3 +++
c2dfb7
 1 file changed, 3 insertions(+)
c2dfb7
c2dfb7
diff --git a/rules/60-persistent-storage-tape.rules b/rules/60-persistent-storage-tape.rules
c2dfb7
index b604864ee8..0575f308df 100644
c2dfb7
--- a/rules/60-persistent-storage-tape.rules
c2dfb7
+++ b/rules/60-persistent-storage-tape.rules
c2dfb7
@@ -9,6 +9,9 @@ ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_t
c2dfb7
 SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $devnode", \
c2dfb7
   SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL}"
c2dfb7
 
c2dfb7
+SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{builtin}="path_id", \
c2dfb7
+  SYMLINK+="tape/by-path/$env{ID_PATH}-changer"
c2dfb7
+
c2dfb7
 SUBSYSTEM!="scsi_tape", GOTO="persistent_storage_tape_end"
c2dfb7
 
c2dfb7
 KERNEL=="st*[0-9]|nst*[0-9]", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394"