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