From 0cbcffd111697fab137d1db6aa0f9918102da7a6e8d983c0bcbb5b9dde17219b Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 9 May 2012 01:24:09 +0000 Subject: [PATCH] Remove old patch OBS-URL: https://build.opensuse.org/package/show/Base:System/mdadm?expand=0&rev=53 --- auto-line.fix | 125 -------------------------------------------------- 1 file changed, 125 deletions(-) delete mode 100644 auto-line.fix diff --git a/auto-line.fix b/auto-line.fix deleted file mode 100644 index 8193c8f..0000000 --- a/auto-line.fix +++ /dev/null @@ -1,125 +0,0 @@ -From b451aa4846c5ccca5447a6b6d45e5623b8c8e961 Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Thu, 6 Oct 2011 13:00:28 +1100 -Subject: [PATCH] Fix handling for "auto" line in mdadm.conf - -Two problems. - -1/ pol_merge was ignoring the pol_auto tag so any 'auto' information - was lost -2/ If a device had not path (e.g. loop devices) or if there were no - path-based policies, we didn't bother looking for policy at all. - So path-independant policies were ignored. - -Reported-by: Christian Boltz -Signed-off-by: NeilBrown ---- - policy.c | 35 ++++++++++++++++++++++------------- - 1 files changed, 22 insertions(+), 13 deletions(-) - -diff --git a/policy.c b/policy.c -index 4a6ef82..ef48353 100644 ---- a/policy.c -+++ b/policy.c -@@ -195,7 +195,9 @@ static char *disk_path(struct mdinfo *disk) - int prefix_len; - DIR *by_path; - char symlink[PATH_MAX] = "/dev/disk/by-path/"; -+ char nm[PATH_MAX]; - struct dirent *ent; -+ int rv; - - by_path = opendir(symlink); - if (!by_path) -@@ -218,7 +220,17 @@ static char *disk_path(struct mdinfo *disk) - return strdup(ent->d_name); - } - closedir(by_path); -- return NULL; -+ /* A NULL path isn't really acceptable - use the devname.. */ -+ sprintf(symlink, "/sys/dev/block/%d:%d", disk->disk.major, disk->disk.minor); -+ rv = readlink(symlink, nm, sizeof(nm)); -+ if (rv > 0) { -+ char *dname; -+ nm[rv] = 0; -+ dname = strrchr(nm, '/'); -+ if (dname) -+ return strdup(dname + 1); -+ } -+ return strdup("unknown"); - } - - char type_part[] = "part"; -@@ -245,13 +257,13 @@ static int pol_match(struct rule *rule, char *path, char *type) - if (rule->name == rule_path) { - if (pathok == 0) - pathok = -1; -- if (fnmatch(rule->value, path, 0) == 0) -+ if (path && fnmatch(rule->value, path, 0) == 0) - pathok = 1; - } - if (rule->name == rule_type) { - if (typeok == 0) - typeok = -1; -- if (strcmp(rule->value, type) == 0) -+ if (type && strcmp(rule->value, type) == 0) - typeok = 1; - } - rule = rule->next; -@@ -270,7 +282,8 @@ static void pol_merge(struct dev_policy **pol, struct rule *rule) - - for (r = rule; r ; r = r->next) - if (r->name == pol_act || -- r->name == pol_domain) -+ r->name == pol_domain || -+ r->name == pol_auto) - pol_new(pol, r->name, r->value, metadata); - } - -@@ -280,7 +293,10 @@ static int path_has_part(char *path, char **part) - * if it does, place a pointer to "-pathNN" - * in 'part'. - */ -- int l = strlen(path); -+ int l; -+ if (!path) -+ return 0; -+ l = strlen(path); - while (l > 1 && isdigit(path[l-1])) - l--; - if (l < 5 || strncmp(path+l-5, "-part", 5) != 0) -@@ -343,9 +359,6 @@ struct dev_policy *path_policy(char *path, char *type) - struct dev_policy *pol = NULL; - int i; - -- if (!type) -- return NULL; -- - rules = config_rules; - - while (rules) { -@@ -366,7 +379,7 @@ struct dev_policy *path_policy(char *path, char *type) - /* Now add any metadata-specific internal knowledge - * about this path - */ -- for (i=0; superlist[i]; i++) -+ for (i=0; path && superlist[i]; i++) - if (superlist[i]->get_disk_controller_domain) { - const char *d = - superlist[i]->get_disk_controller_domain(path); -@@ -399,12 +412,8 @@ struct dev_policy *disk_policy(struct mdinfo *disk) - char *type = disk_type(disk); - struct dev_policy *pol = NULL; - -- if (!type) -- return NULL; - if (config_rules_has_path) - path = disk_path(disk); -- if (!path) -- return NULL; - - pol = path_policy(path, type); - --- -1.7.6.4 -