From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clemens Ladisch Date: Wed, 04 Jul 2012 17:08:00 +0000 Subject: [PATCH] udev: persistent FireWire device names Message-Id: <4FF47870.3020509@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 --- Makefile.am | 1 + rules/60-persistent-firewire.rules | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3b7ec0b..415fae6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1510,6 +1510,7 @@ dist_udevrules_DATA += \ rules/60-persistent-input.rules \ rules/60-persistent-alsa.rules \ rules/60-persistent-storage.rules \ + rules/60-persistent-firewire.rules \ rules/75-net-description.rules \ rules/75-tty-description.rules \ rules/78-sound-card.rules \ diff --git a/rules/60-persistent-firewire.rules b/rules/60-persistent-firewire.rules new file mode 100644 index 0000000..2eb8cfe --- /dev/null +++ b/rules/60-persistent-firewire.rules @@ -0,0 +1,26 @@ +# do not edit this file, it will be overwritten on update + +ACTION="remove", GOTO="persistent_firewire_end" +SUBSYSTEM!="firewire", GOTO="persistent_firewire_end" + +ATTR{is_local}="1", OPTIONS="link_priority=1" + +TEST="guid", SYMLINK+="firewire/by-id/guid-$attr{guid}" + +# Most devices have the model name in the root directory. +TEST="vendor_name", TEST="model_name", \ + OPTIONS="string_escape=replace", \ + SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{model_name}" +# Some devices have the model name only in the first unit directory, so we have +# to get the name from the corresponding subdevice. (The detour through cat is +# necessary because $attr does not allow substitutions in its file name.) +TEST="vendor_name", TEST!="model_name", TEST="$kernel.0/model_name", \ + PROGRAM="/bin/cat $sys$devpath/$kernel.0/model_name", \ + OPTIONS="string_escape=replace", \ + SYMLINK+="firewire/by-name/$attr{vendor_name} $result" +# To make the preceding rule work when the subdevice is added after the parent +# device, force a 'change' event to rerun that rule in this case. +ACTION="add", DEVPATH="*/fw[0-9]*/fw[0-9]*.0", TEST="model_name", TEST!="../model_name", \ + ATTR{../uevent}="change" + +LABEL="persistent_firewire_end"