Create: give better error message if member device unusable.
Rather than just saying "unusable", report if device is busy or is no a block device. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
a252c07814
commit
e9b11feec8
16
Create.c
16
Create.c
|
@ -292,6 +292,8 @@ int Create(struct supertype *st, char *mddev,
|
||||||
for (dv=devlist; dv && !have_container; dv=dv->next, dnum++) {
|
for (dv=devlist; dv && !have_container; dv=dv->next, dnum++) {
|
||||||
char *dname = dv->devname;
|
char *dname = dv->devname;
|
||||||
unsigned long long freesize;
|
unsigned long long freesize;
|
||||||
|
int dfd;
|
||||||
|
|
||||||
if (strcasecmp(dname, "missing")==0) {
|
if (strcasecmp(dname, "missing")==0) {
|
||||||
if (first_missing > dnum)
|
if (first_missing > dnum)
|
||||||
first_missing = dnum;
|
first_missing = dnum;
|
||||||
|
@ -300,6 +302,20 @@ int Create(struct supertype *st, char *mddev,
|
||||||
missing_disks ++;
|
missing_disks ++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
dfd = open(dname, O_RDONLY|O_EXCL);
|
||||||
|
if (dfd < 0) {
|
||||||
|
fprintf(stderr, Name ": cannot open %s: %s\n",
|
||||||
|
dname, strerror(errno));
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
if (fstat(dfd, &stb) != 0 ||
|
||||||
|
(stb.st_mode & S_IFMT) != S_IFBLK) {
|
||||||
|
close(dfd);
|
||||||
|
fprintf(stderr, Name ": %s is not a block device\n",
|
||||||
|
dname);
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
close(dfd);
|
||||||
info.array.working_disks++;
|
info.array.working_disks++;
|
||||||
if (dnum < raiddisks)
|
if (dnum < raiddisks)
|
||||||
info.array.active_disks++;
|
info.array.active_disks++;
|
||||||
|
|
Loading…
Reference in New Issue