]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.c
Monitor: reduce default poll interval if mdstat is pollable.
[thirdparty/mdadm.git] / mdadm.c
diff --git a/mdadm.c b/mdadm.c
index 3b14ea5103494f6bccd4b8f1af671d41ae7cfa17..fee7fd92fd859361c6870cfb5ee53291734f5555 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -343,9 +343,11 @@ int main(int argc, char *argv[])
                        }
                        continue;
 
+#if 0
                case O(ASSEMBLE,AutoHomeHost):
                        auto_update_home = 1;
                        continue;
+#endif
                case O(INCREMENTAL, 'e'):
                case O(CREATE,'e'):
                case O(ASSEMBLE,'e'):
@@ -378,7 +380,8 @@ int main(int argc, char *argv[])
 
 
                case O(GROW,'z'):
-               case O(CREATE,'z'): /* size */
+               case O(CREATE,'z'):
+               case O(BUILD,'z'): /* size */
                        if (size >= 0) {
                                fprintf(stderr, Name ": size may only be specified once. "
                                        "Second value is %s.\n", optarg);
@@ -410,7 +413,10 @@ int main(int argc, char *argv[])
                                        optarg);
                                exit(2);
                        }
-                       if (level != 0 && level != -1 && level != 1 && level != -4 && level != -5 && mode == BUILD) {
+                       if (level != 0 && level != LEVEL_LINEAR && level != 1 &&
+                           level != LEVEL_MULTIPATH && level != LEVEL_FAULTY &&
+                           level != 10 &&
+                           mode == BUILD) {
                                fprintf(stderr, Name ": Raid level %s not permitted with --build.\n",
                                        optarg);
                                exit(2);
@@ -1149,6 +1155,7 @@ int main(int argc, char *argv[])
                                        } while (rv2!=2);
                                        /* Incase there are stacked devices, we need to go around again */
                                } while (acnt);
+#if 0
                                if (cnt == 0 && auto_update_home && homehost) {
                                        /* Nothing found, maybe we need to bootstrap homehost info */
                                        do {
@@ -1168,6 +1175,7 @@ int main(int argc, char *argv[])
                                                /* Incase there are stacked devices, we need to go around again */
                                        } while (acnt);
                                }
+#endif
                                if (cnt == 0 && rv == 0) {
                                        fprintf(stderr, Name ": No arrays found in config file or automatically\n");
                                        rv = 1;
@@ -1202,7 +1210,7 @@ int main(int argc, char *argv[])
                rv = Build(devlist->devname, chunk, level, layout,
                           raiddisks, devlist->next, assume_clean,
                           bitmap_file, bitmap_chunk, write_behind,
-                          delay, verbose-quiet, autof);
+                          delay, verbose-quiet, autof, size);
                break;
        case CREATE:
                if (delay == 0) delay = DEFAULT_BITMAP_DELAY;
@@ -1365,6 +1373,13 @@ int main(int argc, char *argv[])
                        rv = 1;
                        break;
                }
+               if (delay == 0) {
+                       if (get_linux_version() > 20616)
+                               /* mdstat responds to poll */
+                               delay = 1000;
+                       else
+                               delay = 60;
+               }
                rv= Monitor(devlist, mailaddr, program,
                            delay?delay:60, daemonise, scan, oneshot,
                            dosyslog, test, pidfile);