Fix oddity where mdadm did not recognise a relative path

mdadm assumed that a pathname started with a "/", while an array
name didn't. This alters the logic so that if the first character
is not a "/" it tries to open an array, and if that fails it drops
through to the pathname code rather than terminating immediately
with an error.

Signed-off-by: Wol <anthony@youngman.org.uk>
Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
This commit is contained in:
Wol 2017-01-17 17:47:05 +00:00 committed by Jes Sorensen
parent 565cc99e34
commit bb6f40bf9c
1 changed files with 6 additions and 6 deletions

12
mdadm.c
View File

@ -1899,12 +1899,12 @@ static int misc_list(struct mddev_dev *devlist,
rv |= SetAction(dv->devname, c->action);
continue;
}
if (dv->devname[0] == '/')
mdfd = open_mddev(dv->devname, 1);
else {
mdfd = open_dev(dv->devname);
if (mdfd < 0)
pr_err("Cannot open %s\n", dv->devname);
switch(dv->devname[0] == '/') {
case 0:
mdfd = open_dev(dv->devname);
if (mdfd >= 0) break;
case 1:
mdfd = open_mddev(dv->devname, 1);
}
if (mdfd>=0) {
switch(dv->disposition) {