[PATCH] udev: persistent FireWire device names

Clemens Ladisch <[email protected]>
Newsgroups gmane.linux.hotplug.devel,gmane.linux.kernel.firewire.devel
Message-ID <[email protected]>
---
 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"
--
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.