From 628cdf19ea35daad22e409e51c0abc7ffb19d6aa Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 3 Nov 2014 12:49:05 +1100 Subject: Rebuildmap: strip local host name from device name. When /run/mdadm/map is being rebuilt, e.g. by "mdadm -Ir", if the device doesn't exist in /dev, we have to choose a name. Currently we don't strip the hostname which is wrong if it is the local host. Reported-by: Stephen Kent Signed-off-by: NeilBrown --- mapfile.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mapfile.c b/mapfile.c index 4e7f242..41599df 100644 --- a/mapfile.c +++ b/mapfile.c @@ -455,12 +455,19 @@ void RebuildMap(void) sep = ""; } } - if (strchr(name, ':')) - /* probably a uniquifying + if (strchr(name, ':')) { + /* Probably a uniquifying * hostname prefix. Allow - * without a suffix + * without a suffix, and strip + * hostname if it is us. */ + if (homehost && unum == -1 && + strncmp(name, homehost, + strlen(homehost)) == 0 && + name[strlen(homehost)] == ':') + name += strlen(homehost)+1; unum = -1; + } while (conflict) { if (unum >= 0) -- 1.7.10.4