From: Joerg Steffens Date: Tue, 21 Nov 2017 11:52:57 +0000 (+0100) Subject: udev-rules: make tape devices also accessable by ENV{ID_SCSI_SERIAL} X-Git-Tag: v240~496^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8d0edd1172e6b61881528fd2428ced520f6862a6;p=thirdparty%2Fsystemd.git udev-rules: make tape devices also accessable by ENV{ID_SCSI_SERIAL} Tape and tape changer devices from Amazon Webservice Storage Gateway VTLs and maybe other iSCSI VTLs all have the same ENV{ID_SERIAL}. The results is, that only the last device is available in /dev/tape/by-id/, as the former devices have been overwritten. However, the devices can be distinguished by ENV{ID_SCSI_SERIAL}. ENV{ID_SCSI_SERIAL} is not set on directly connected SCSI devices. This rule additional creates links based on the ENV{ID_SCSI_SERIAL}, if it is set. In my case, it creates (ID_SCSI_SERIAL) /dev/tape/by-id/scsi-AMZN_SGW-6BF81D02_MC_00001 /dev/tape/by-id/scsi-AMZN_SGW-6BF81D02_TD_00001 /dev/tape/by-id/scsi-AMZN_SGW-6BF81D02_TD_00002 ... instead of only (ID_SERIAL) scsi-2414d5a4e5f5347572d364246 --- diff --git a/rules/60-persistent-storage-tape.rules b/rules/60-persistent-storage-tape.rules index 0575f308df5..0136140a466 100644 --- a/rules/60-persistent-storage-tape.rules +++ b/rules/60-persistent-storage-tape.rules @@ -9,6 +9,11 @@ ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_t 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}" +# iSCSI devices from the same host have all the same ID_SERIAL, +# but additionally a property named ID_SCSI_SERIAL. +SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", ENV{ID_SCSI_SERIAL}=="?*", \ + SYMLINK+="tape/by-id/scsi-$env{ID_SCSI_SERIAL}" + SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{builtin}="path_id", \ SYMLINK+="tape/by-path/$env{ID_PATH}-changer" @@ -18,8 +23,10 @@ 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=="nst*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-nst" +KERNEL=="st*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}" +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" # by-path (parent device path) KERNEL=="st*[0-9]|nst*[0-9]", IMPORT{builtin}="path_id"