summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-04 20:54:50 +1100
committerNeilBrown <neilb@suse.de>2008-11-04 20:54:50 +1100
commitbde2c6e2870148c85f971d93e88c128d2bd0be10 (patch)
treec33cf455ed86c3d79b3ed3ecfd4cb1554add9d40
parent56a8da69b1decc48d6563202648a89a630866d61 (diff)
downloadmdadm-bde2c6e2870148c85f971d93e88c128d2bd0be10.tar.gz
mdadm-bde2c6e2870148c85f971d93e88c128d2bd0be10.tar.xz
mdadm-bde2c6e2870148c85f971d93e88c128d2bd0be10.zip
mdopen: only let numeric name set minor number if it doesn't cause a conflict.
So if the array with minor number matching the name of a new array already exists, just assemble with a different minor number. Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--mdopen.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mdopen.c b/mdopen.c
index 32ccdbb..e1c0d7f 100644
--- a/mdopen.c
+++ b/mdopen.c
@@ -235,11 +235,14 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
use_mdp = 0;
}
if (num < 0 && trustworthy == LOCAL && name) {
- /* if name is numeric, us that for num */
+ /* if name is numeric, use that for num
+ * if it is not already in use */
char *ep;
num = strtoul(name, &ep, 10);
if (ep == name || *ep)
num = -1;
+ else if (mddev_busy(use_mdp ? (-1-num) : num))
+ num = -1;
}
if (num < 0) {