[systemd-devel] udev ata_id environment keys not imported for sata hdd

Mauricio Garavaglia mkfs at x86.ar
Sat Jul 29 01:28:23 UTC 2023


Hello,

While debugging why `pm-utils` hdparam udev rules were not picked up by my
SATA HDD, I found that it depends on the presence of the 
`ID_ATA_FEATURE_SET_APM`
env key to set the drive advanced power management. This key is returned by
`ata_id` correctly but, among other values, they are never imported as
environment keys by udev.

They seem to be imported in `/lib/udev/rules.d/60-persistent-storage.rules`

# ATA
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", \
  ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode"

But this rule is not applied since `sg3_utils` already set an 
`ID_SERIAL` in [1].

I workaround this by introducing a new rule that imports the `ata_id` 
output on that
device, without the ID_SERIAL condition, which makes hdparm to detect 
APM correctly.

So, regardless of how hdparm is detecting APM capabilities, I'm not sure 
the current
behavior is expected or not. I would assume the `ata_id` env properties are
always imported if the device has `ID_ATA=1`. Does it make sense?

I found this on an fresh Ubuntu 22.04.2 LTS with systemd 249 
(249.11-0ubuntu3.9)

Thanks!


[1] 
https://github.com/hreinecke/sg3_utils/blob/master/scripts/55-scsi-sg3_id.rules#L100C61-L100C61


--
Mauricio Garavaglia



More information about the systemd-devel mailing list