diff options
author | Marco d'Itri <md@Linux.IT> | 2006-11-27 10:34:43 +0100 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2006-11-27 10:34:43 +0100 |
commit | 64e6d9dd705f418307fb474a5185d31470f21989 (patch) | |
tree | 5b5ddc172207fab8f8922614505573248d274935 /extras | |
parent | 26133d54e06806456cc990e1cb63ca5ae35052ab (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')
-rw-r--r-- | extras/rule_generator/write_cd_rules | 34 |
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)" |