udev: getting attributes from subdevice?

Clemens Ladisch <[email protected]>
Newsgroups gmane.linux.hotplug.devel
Message-ID <[email protected]>
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
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.