Detail: don't exit if ioctl has been successful
When GET_ARRAY_INFO ioctl is successful, mdadm exits with an error. It breaks udev and no links in /dev/md are created. Also change debug print to error print in the message indicating lack of the link to facilitate debugging similar issues in the future. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
parent
8fac4a54cb
commit
9b8fea914f
27
Detail.c
27
Detail.c
|
@ -99,21 +99,24 @@ int Detail(char *dev, struct context *c)
|
|||
inactive = (sra->array_state == ARRAY_ACTIVE ||
|
||||
sra->array_state == ARRAY_CLEAR);
|
||||
st = super_by_fd(fd, &subarray);
|
||||
if (md_get_array_info(fd, &array) && errno == ENODEV) {
|
||||
if (sra->array.major_version == -1 &&
|
||||
sra->array.minor_version == -1 &&
|
||||
sra->devs == NULL) {
|
||||
pr_err("Array associated with md device %s does not exist.\n", dev);
|
||||
if (md_get_array_info(fd, &array)) {
|
||||
if (errno == ENODEV) {
|
||||
if (sra->array.major_version == -1 &&
|
||||
sra->array.minor_version == -1 &&
|
||||
sra->devs == NULL) {
|
||||
pr_err("Array associated with md device %s does not exist.\n",
|
||||
dev);
|
||||
close(fd);
|
||||
sysfs_free(sra);
|
||||
return rv;
|
||||
}
|
||||
array = sra->array;
|
||||
} else {
|
||||
pr_err("cannot get array detail for %s: %s\n",
|
||||
dev, strerror(errno));
|
||||
close(fd);
|
||||
sysfs_free(sra);
|
||||
return rv;
|
||||
}
|
||||
array = sra->array;
|
||||
} else {
|
||||
pr_err("cannot get array detail for %s: %s\n",
|
||||
dev, strerror(errno));
|
||||
close(fd);
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (fstat(fd, &stb) != 0 && !S_ISBLK(stb.st_mode))
|
||||
|
|
Loading…
Reference in New Issue