Create new md devices consistently

Creating a new MD device with the name 'd-0' results in some
 unexpected behavior, since mdadm sees that '-0' is a
 non-negative integer and therefore makes a "partitionable"
 device (/dev/md_d0).  This is not the expected behavior,
 since the documentation mentions 'dN' several places, and a
 reboot brings it up as /dev/md/d-0.  Make this consistent
 by ensuring that the character immediately following 'd' is
 a digit during creation.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Justin Maggard 2012-10-23 15:04:00 -07:00 committed by NeilBrown
parent 72e7fb13f0
commit 4cda8682c6
1 changed files with 4 additions and 1 deletions

View File

@ -207,7 +207,10 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
char *ep;
if (cname[0] == 'd')
sp++;
num = strtoul(sp, &ep, 10);
if (isdigit(sp[0]))
num = strtoul(sp, &ep, 10);
else
ep = sp;
if (ep == sp || *ep || num < 0)
num = -1;
else if (cname[0] == 'd')