summaryrefslogtreecommitdiff
path: root/extras/rule_generator
diff options
context:
space:
mode:
authorMarco d'Itri <md@Linux.IT>2006-11-27 10:34:43 +0100
committerKay Sievers <kay.sievers@vrfy.org>2006-11-27 10:34:43 +0100
commit64e6d9dd705f418307fb474a5185d31470f21989 (patch)
tree5b5ddc172207fab8f8922614505573248d274935 /extras/rule_generator
parent26133d54e06806456cc990e1cb63ca5ae35052ab (diff)
write_cd_rules: identity-based persistence
Bryan Kadzban wrote: > Marco d'Itri wrote: > > Bryan Kadzban wrote: > > > > > This is a sort of follow-up of my path-based persistence patch for > > > net devices; it's the opposite type of addition for CD symlinks. > > > > Looks good. I am attaching a slightly reformatted version, I think it > > should be applied. > > That's probably a lot more clear than my version anyway: what you posted > looks like it does basically the same thing, just with some changes in > the order and sense of checks.
Diffstat (limited to 'extras/rule_generator')
-rw-r--r--extras/rule_generator/write_cd_rules34
1 files changed, 33 insertions, 1 deletions
diff --git a/extras/rule_generator/write_cd_rules b/extras/rule_generator/write_cd_rules
index 232daeb86b..1dbe6b70de 100644
--- a/extras/rule_generator/write_cd_rules
+++ b/extras/rule_generator/write_cd_rules
@@ -50,6 +50,38 @@ if [ -z "$ID_CDROM" ]; then
exit 1
fi
+if [ "$1" ]; then
+ METHOD="$1"
+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
+ exit 1
+ ;;
+esac
+
# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file
@@ -58,7 +90,7 @@ choose_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
-match="ENV{ID_CDROM}==\"?*\", ENV{ID_PATH}==\"$ID_PATH\""
+match="ENV{ID_CDROM}==\"?*\", $RULE"
comment="$ID_MODEL ($ID_PATH)"