From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clemens Ladisch Date: Sat, 30 Jun 2012 17:15:26 +0000 Subject: udev: getting attributes from subdevice? Message-Id: <4FEF342E.2040803@ladisch.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org Hi, I thought it would be useful to have persistent names for FireWire devices: ######################################################################## ACTION="remove", GOTO="persistent_firewire_end" SUBSYSTEM!="firewire", GOTO="persistent_firewire_end" TEST="guid", SYMLINK+="firewire/by-id/guid-$attr{guid}" TEST="vendor_name", TEST="model_name", \ OPTIONS="string_escape=replace", \ SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{model_name}" LABEL="persistent_firewire_end" ######################################################################## And these rules appear to work: $ cat /sys/bus/firewire/devices/fw0/{vendor_name,model_name} Linux Firewire Juju $ ls -l /dev/firewire/by-name/ lrwxrwxrwx 1 root root 9 2012-06-30 18:13 Linux_Firewire_Juju -> ../../fw0 However, there are devices where, due to some strange rules in the FireWire specifications, some attributes end up belonging to a subdevice: $ cat /sys/bus/firewire/devices/fw2/{vendor_name,model_name} LaCie cat: /sys/bus/firewire/devices/fw2/model_name: No such file or directory $ cat /sys/bus/firewire/devices/fw2/fw2.0/model_name Hard Drive Quadra Okay, let's add some rules to handle this: TEST="vendor_name", TEST!="model_name", WAIT_FOR="$kernel.0/model_name" TEST="vendor_name", TEST!="model_name", TEST="$kernel.0/model_name", \ OPTIONS="string_escape=replace", \ SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{$kernel.0/model_name}" But this doesn't work, probably because $kernel is not substituted before $attr: $ ls -l /dev/firewire/by-name/ lrwxrwxrwx 1 root root 9 2012-06-30 18:13 LaCie_ -> ../../fw2 (It works if I use $attr{fw2.0/model_name}, but that isn't generic enough.) Do I have to write a separate tool for extracting the name? Regards, Clemens