From ee173c5927649e8f2e6f42046315e84eb8e55e1b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 7 Oct 2008 00:41:00 +0200 Subject: [PATCH] replace spaces in dm and md name symlinks We create multiple symlinks for dm names with spaces, which isn't what we want. --- rules/packages/64-md-raid.rules | 4 ++-- rules/suse/64-device-mapper.rules | 2 +- udev/udev_rules.c | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/rules/packages/64-md-raid.rules b/rules/packages/64-md-raid.rules index 02a321093..0e6a939c1 100644 --- a/rules/packages/64-md-raid.rules +++ b/rules/packages/64-md-raid.rules @@ -11,9 +11,9 @@ KERNEL!="md*", GOTO="md_end" ATTR{md/array_state}=="|clear|inactive", GOTO="md_end" IMPORT{program}="/sbin/mdadm --detail --export $tempnode" -ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}" +ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" -ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n" +ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" IMPORT{program}="vol_id --export $tempnode" diff --git a/rules/suse/64-device-mapper.rules b/rules/suse/64-device-mapper.rules index b065aec55..e0a63eee7 100644 --- a/rules/suse/64-device-mapper.rules +++ b/rules/suse/64-device-mapper.rules @@ -8,7 +8,7 @@ ACTION!="add|change", GOTO="device_mapper_end" IMPORT{program}="/sbin/dmsetup export -j%M -m%m" ENV{DM_NAME}!="?*", GOTO="device_mapper_end" -SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" +SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}", OPTIONS+="string_escape=replace" ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}" ENV{DM_STATE}=="SUSPENDED", GOTO="device_mapper_end" diff --git a/udev/udev_rules.c b/udev/udev_rules.c index 9527f46e7..d06f536d1 100644 --- a/udev/udev_rules.c +++ b/udev/udev_rules.c @@ -1447,7 +1447,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) rule->symlink.operation == KEY_OP_ADD)) { char temp[UTIL_PATH_SIZE]; char *pos, *next; - int count; + int count = 0; if (rule->symlink.operation == KEY_OP_ASSIGN_FINAL) udevice->symlink_final = 1; @@ -1459,12 +1459,12 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) /* allow multiple symlinks separated by spaces */ util_strlcpy(temp, key_val(rule, &rule->symlink), sizeof(temp)); udev_rules_apply_format(udevice, temp, sizeof(temp)); - if (rule->string_escape == ESCAPE_UNSET || - rule->string_escape == ESCAPE_REPLACE) { + if (rule->string_escape == ESCAPE_UNSET) count = util_replace_chars(temp, ALLOWED_CHARS_FILE " "); - if (count > 0) - info(udevice->udev, "%i character(s) replaced\n" , count); - } + else if (rule->string_escape == ESCAPE_REPLACE) + count = util_replace_chars(temp, ALLOWED_CHARS_FILE); + if (count > 0) + info(udevice->udev, "%i character(s) replaced\n" , count); dbg(udevice->udev, "rule applied, added symlink(s) '%s'\n", temp); pos = temp; while (isspace(pos[0])) -- 2.30.2