]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Manage.c
Merge branch 'master' of git://github.com/djbw/mdadm
[thirdparty/mdadm.git] / Manage.c
index df6079bf16afbe5fee96c82bbce5a32d564ec82d..749fa7c1b8f8b83676e2b5f45c27d83ee2a4666d 100644 (file)
--- a/Manage.c
+++ b/Manage.c
@@ -565,7 +565,10 @@ int Manage_subdevs(char *devname, int fd,
                                                        disc.state |= 1 << MD_DISK_WRITEMOSTLY;
                                                if (dv->writemostly == 2)
                                                        disc.state &= ~(1 << MD_DISK_WRITEMOSTLY);
-                                               if (ioctl(fd, ADD_NEW_DISK, &disc) == 0) {
+                                               /* don't even try if disk is marked as faulty */
+                                               errno = 0;
+                                               if ((disc.state & 1) == 0 &&
+                                                   ioctl(fd, ADD_NEW_DISK, &disc) == 0) {
                                                        if (verbose >= 0)
                                                                fprintf(stderr, Name ": re-added %s\n", dv->devname);
                                                        continue;