summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rules/rules.d/60-persistent-storage.rules12
1 files changed, 12 insertions, 0 deletions
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules
index 6449e077ac..d3f2f73495 100644
--- a/rules/rules.d/60-persistent-storage.rules
+++ b/rules/rules.d/60-persistent-storage.rules
@@ -6,7 +6,16 @@
# forward scsi device event to corresponding block device
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"
+# from this point on, we don't care about remove envets
+#
ACTION=="remove", GOTO="persistent_storage_end"
+
+# run scsi_id and ata_id on the actual SCSI device
+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", ENV{ID_SERIAL}!="?*", ATTR{vendor}=="ATA", IMPORT{program}="ata_id --export $root/bsg/$kernel"
+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --whitelisted --export --device $root/bsg/$kernel"
+
+# from this point on, only care about block devices
+#
SUBSYSTEM!="block", GOTO="persistent_storage_end"
# skip rules for inappropriate block devices
@@ -22,6 +31,9 @@ ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*"
KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}"
KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n"
+# import ata_id/scsi_id data from the scsi_device captured above, if available
+SUBSYSTEMS=="scsi", IMPORT{parent}="ID_*"
+
# USB devices use their own serial number
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"
# ATA devices with their own "ata" kernel subsystem