1*44704f69SBart Van Assche# do not edit this file, it will be overwritten on update 2*44704f69SBart Van Assche 3*44704f69SBart Van Assche# persistent storage links: /dev/disk/{by-id,by-path} 4*44704f69SBart Van Assche# scheme based on "Linux persistent device names", 2004, Hannes Reinecke <[email protected]> 5*44704f69SBart Van Assche 6*44704f69SBart Van Assche# This file contains rules for setting udev environment variables based on 7*44704f69SBart Van Assche# hardware properties (serial numbers etc), which can be obtained without 8*44704f69SBart Van Assche# actually reading from the device. 9*44704f69SBart Van Assche# 10*44704f69SBart Van Assche# Hopefully this will be integrated into systemd/udev soon (as 54-storage-hardware.rules). 11*44704f69SBart Van Assche# Until then, we ship it here in sg3-utils. 12*44704f69SBart Van Assche# It's important that rules dealing with low-level hardware attributes run 13*44704f69SBart Van Assche# before the generic SCSI rules in 55-scsi-sg3_utils.rules. 14*44704f69SBart Van Assche 15*44704f69SBart Van AsscheACTION=="remove", GOTO="storage_hardware_end" 16*44704f69SBart Van AsscheSUBSYSTEM!="block", GOTO="block_storage_end" 17*44704f69SBart Van AsscheKERNEL!="sd*|sr*|cciss*", GOTO="block_storage_end" 18*44704f69SBart Van Assche 19*44704f69SBart Van Assche# ignore partitions that span the entire disk 20*44704f69SBart Van AsscheTEST=="whole_disk", GOTO="block_storage_end" 21*44704f69SBart Van Assche 22*44704f69SBart Van Assche# for partitions import parent information 23*44704f69SBart Van AsscheENV{DEVTYPE}=="partition", ENV{ID_SERIAL}!="?*", IMPORT{parent}="ID_*" 24*44704f69SBart Van Assche 25*44704f69SBart Van Assche# ATA 26*44704f69SBart Van AsscheKERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode" 27*44704f69SBart Van Assche 28*44704f69SBart Van Assche# ATAPI devices (SPC-3 or later) 29*44704f69SBart Van AsscheKERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $devnode" 30*44704f69SBart Van Assche 31*44704f69SBart Van Assche# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures) 32*44704f69SBart Van AsscheKERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode" 33*44704f69SBart Van Assche 34*44704f69SBart Van Assche# Fall back usb_id for USB devices 35*44704f69SBart Van AsscheKERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" 36*44704f69SBart Van Assche 37*44704f69SBart Van Assche# FireWire 38*44704f69SBart Van AsscheENV{ID_IEEE1394}!="?*", KERNEL=="sd*|sr*", ATTRS{ieee1394_id}=="?*", ENV{ID_IEEE1394}="$attr{ieee1394_id}" 39*44704f69SBart Van Assche 40*44704f69SBart Van Assche# by-path 41*44704f69SBart Van AsscheENV{ID_PATH}!="?*", ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id" 42*44704f69SBart Van Assche 43*44704f69SBart Van AsscheLABEL="block_storage_end" 44*44704f69SBart Van Assche 45*44704f69SBart Van Assche# SCSI tape devices 46*44704f69SBart Van AsscheSUBSYSTEM!="scsi_tape", GOTO="storage_hardware_end" 47*44704f69SBart Van AsscheKERNEL!="st*[0-9]|nst*[0-9]", GOTO="storage_hardware_end" 48*44704f69SBart Van Assche 49*44704f69SBart Van AsscheENV{ID_SERIAL}!="?*", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394" 50*44704f69SBart Van AsscheENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", ATTRS{serial}=="?*", IMPORT{builtin}="usb_id" 51*44704f69SBart Van Assche 52*44704f69SBart Van Assche# by-path 53*44704f69SBart Van AsscheENV{ID_PATH}!="?*", IMPORT{builtin}="path_id" 54*44704f69SBart Van Assche 55*44704f69SBart Van AsscheLABEL="storage_hardware_end" 56