From: NeilBrown Date: Mon, 3 Nov 2014 01:49:05 +0000 (+1100) Subject: Rebuildmap: strip local host name from device name. X-Git-Tag: mdadm-3.3.3~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=628cdf19ea35daad22e409e51c0abc7ffb19d6aa;p=thirdparty%2Fmdadm.git 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 --- diff --git a/mapfile.c b/mapfile.c index 4e7f2421..41599df0 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)