summaryrefslogtreecommitdiffstats
path: root/source/a/udev/rule_generator.diff
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/udev/rule_generator.diff')
-rw-r--r--source/a/udev/rule_generator.diff81
1 files changed, 66 insertions, 15 deletions
diff --git a/source/a/udev/rule_generator.diff b/source/a/udev/rule_generator.diff
index 25c72b845..ff2acf808 100644
--- a/source/a/udev/rule_generator.diff
+++ b/source/a/udev/rule_generator.diff
@@ -1,17 +1,62 @@
-diff -Nur udev-182.orig/src/rule_generator/write_cd_rules udev-182/src/rule_generator/write_cd_rules
---- udev-182.orig/src/rule_generator/write_cd_rules 2012-03-24 22:47:53.138527732 -0500
-+++ udev-182/src/rule_generator/write_cd_rules 2012-03-24 22:59:42.595889830 -0500
+--- ./src/rule_generator/write_cd_rules.orig 2012-01-28 18:15:46.958827013 -0600
++++ ./src/rule_generator/write_cd_rules 2013-01-17 22:58:27.294859303 -0600
@@ -3,7 +3,8 @@
# This script is run if an optical drive lacks a rule for persistent naming.
#
# It adds symlinks for optical drives based on the device class determined
-# by cdrom_id and used ID_PATH to identify the device.
-+# by cdrom_id and uses ID_PATH or ID_SERIAL or ID_MODEL and ID_REVISION to
++# by cdrom_id and uses ID_SERIAL or ID_MODEL and ID_REVISION to
+# identify the device.
# (C) 2006 Marco d'Itri <md@Linux.IT>
#
-@@ -105,18 +106,57 @@
+@@ -66,37 +67,16 @@
+ exit 1
+ fi
+
+-if [ "$1" ]; then
+- METHOD="$1"
++# ID_PATH is gone from the ata subsystem used in recent kernels, so
++# always use the by-id method:
++if [ "$ID_SERIAL" ]; then
++ RULE="ENV{ID_SERIAL}==\"$ID_SERIAL\""
++elif [ "$ID_MODEL" -a "$ID_REVISION" ]; then
++ RULE="ENV{ID_MODEL}==\"$ID_MODEL\", ENV{ID_REVISION}==\"$ID_REVISION\""
+ else
+- METHOD='by-path'
+-fi
+-
+-case "$METHOD" in
+- by-path)
+- if [ -z "$ID_PATH" ]; then
+- echo "$DEVPATH not supported by path_id. by-id may work." >&2
+- exit 1
+- fi
+- RULE="ENV{ID_PATH}==\"$ID_PATH\""
+- ;;
+-
+- by-id)
+- if [ "$ID_SERIAL" ]; then
+- RULE="ENV{ID_SERIAL}==\"$ID_SERIAL\""
+- elif [ "$ID_MODEL" -a "$ID_REVISION" ]; then
+- RULE="ENV{ID_MODEL}==\"$ID_MODEL\", ENV{ID_REVISION}==\"$ID_REVISION\""
+- else
+- echo "$DEVPATH not supported by ata_id. by-path may work." >&2
+- exit 1
+- fi
+- ;;
+-
+- *)
+- echo "Invalid argument (must be either by-path or by-id)." >&2
++ echo "$DEVPATH not supported by ata_id. Unable to generate persistent rules." >&2
+ exit 1
+- ;;
+-esac
++fi
+
+ # Prevent concurrent processes from modifying the file at the same time.
+ lock_rules_file
+@@ -105,18 +85,62 @@
choose_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
@@ -19,8 +64,9 @@ diff -Nur udev-182.orig/src/rule_generator/write_cd_rules udev-182/src/rule_gene
match="SUBSYSTEM==\"block\", ENV{ID_CDROM}==\"?*\", $RULE"
- comment="$ID_MODEL ($ID_PATH)"
+-comment="$ID_MODEL ($ID_PATH)"
-
++comment="$ID_MODEL ($ID_SERIAL)"
write_rule "$match" "cdrom$link_num" "$comment"
-[ "$ID_CDROM_CD_R" -o "$ID_CDROM_CD_RW" ] && \
- write_rule "$match" "cdrw$link_num"
@@ -28,47 +74,52 @@ diff -Nur udev-182.orig/src/rule_generator/write_cd_rules udev-182/src/rule_gene
- write_rule "$match" "dvd$link_num"
-[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
- write_rule "$match" "dvdrw$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' cdrom)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "cdrom"
+ fi
+
+ if [ "$ID_CDROM_CD_R" ]; then
-+ write_rule "$match" "cdr$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' cdr)" = "" ]; then
++ write_rule "$match" "cdr$link_num"
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "cdr"
+ fi
+
+ write_rule "$match" "cdwriter$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' cdwriter)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "cdwriter"
+ fi
+
+ if [ "$ID_CDROM_CD_RW" ]; then
+ write_rule "$match" "cdrw$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' cdrw)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "cdrw"
+ fi
+ fi
+
-+ if [ "$(find_all_rules 'SYMLINK+=' writer)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "writer"
+ fi
+ fi
+
+ if [ "$ID_CDROM_DVD" ]; then
+ write_rule "$match" "dvd$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' dvd)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "dvd"
+ fi
+
+ if [ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ]; then
++ write_rule "$match" "dvdr$link_num"
++ if [ "$link_num" = "0" ]; then
++ write_rule "$match" "dvdr"
++ fi
++
+ write_rule "$match" "dvdrw$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' dvdrw)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "dvdrw"
+ fi
+
+ write_rule "$match" "dvdwriter$link_num"
-+ if [ "$(find_all_rules 'SYMLINK+=' dvdwriter)" = "" ]; then
++ if [ "$link_num" = "0" ]; then
+ write_rule "$match" "dvdwriter"
+ fi
+ fi