]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.c
Change Incremental and related functions to take struct context
[thirdparty/mdadm.git] / mdadm.c
diff --git a/mdadm.c b/mdadm.c
index 13067a095c1a38aac01512022a7eff92e130b793..c979b94e3e5e5a9eb021f4e77ad1b6be14c9152e 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -33,8 +33,7 @@
 static int scan_assemble(struct supertype *ss,
                         struct context *c,
                         struct mddev_ident *ident);
-static int misc_scan(char devmode, int verbose, int export, int test,
-                    char *homehost, char *prefer);
+static int misc_scan(char devmode, struct context *c);
 static int stop_scan(int verbose);
 static int misc_list(struct mddev_dev *devlist,
                     struct mddev_ident *ident,
@@ -1221,6 +1220,10 @@ int main(int argc, char *argv[])
 
        ident.autof = c.autof;
 
+       if (c.scan && c.verbose < 2)
+               /* --scan implied --brief unless -vv */
+               c.brief = 1;
+
        rv = 0;
        switch(mode) {
        case MANAGE:
@@ -1315,7 +1318,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,
-                          c.delay, c.verbose, c.autof, size);
+                          &c, size);
                break;
        case CREATE:
                if (c.delay == 0)
@@ -1332,11 +1335,11 @@ int main(int argc, char *argv[])
                }
 
                rv = Create(ss, devlist->devname, chunk, level, layout, size<0 ? 0 : size,
-                           raiddisks, sparedisks, ident.name, c.homehost,
+                           raiddisks, sparedisks, ident.name,
                            ident.uuid_set ? ident.uuid : NULL,
-                           devs_found-1, devlist->next, c.runstop,
-                           c.readonly, c.verbose, c.force, assume_clean,
-                           bitmap_file, bitmap_chunk, write_behind, c.delay, c.autof);
+                           devs_found-1, devlist->next,
+                           assume_clean,
+                           bitmap_file, bitmap_chunk, write_behind, &c);
                break;
        case MISC:
                if (devmode == 'E') {
@@ -1350,19 +1353,14 @@ int main(int argc, char *argv[])
                                pr_err("No devices listed in %s\n", configfile?configfile:DefaultConfFile);
                                exit(1);
                        }
-                       if (c.brief && c.verbose > 0)
-                               c.brief = 2;
-                       rv = Examine(devlist, c.scan?(c.verbose>1?0:c.verbose):c.brief,
-                                    c.export, c.scan,
-                                    c.SparcAdjust, ss, c.homehost);
+                       rv = Examine(devlist, &c, ss);
                } else if (devmode == DetailPlatform) {
                        rv = Detail_Platform(ss ? ss->ss : NULL, ss ? c.scan : 1, c.verbose);
                } else if (devlist == NULL) {
                        if (devmode == 'S' && c.scan)
                                rv = stop_scan(c.verbose);
                        else if ((devmode == 'D' || devmode == Waitclean) && c.scan)
-                               rv = misc_scan(devmode, c.verbose, c.export,
-                                              c.test, c.homehost, c.prefer);
+                               rv = misc_scan(devmode, &c);
                        else if (devmode == UdevRules)
                                rv = Write_rules(udev_filename);
                        else {
@@ -1390,10 +1388,12 @@ int main(int argc, char *argv[])
                        else
                                c.delay = 60;
                }
+               if (c.delay == 0)
+                       c.delay = 60;
                rv= Monitor(devlist, mailaddr, program,
-                           c.delay?c.delay:60, daemonise, c.scan, oneshot,
-                           dosyslog, c.test, pidfile, increments,
-                           spare_sharing, c.prefer);
+                           &c, daemonise, oneshot,
+                           dosyslog, pidfile, increments,
+                           spare_sharing);
                break;
 
        case GROW:
@@ -1499,10 +1499,7 @@ int main(int argc, char *argv[])
                        rv = IncrementalRemove(devlist->devname, remove_path,
                                               c.verbose);
                else
-                       rv = Incremental(devlist->devname, c.verbose,
-                                        c.runstop, ss, c.homehost,
-                                        c.require_homehost, c.autof,
-                                        c.freeze_reshape);
+                       rv = Incremental(devlist->devname, &c, ss);
                break;
        case AUTODETECT:
                autodetect();
@@ -1598,8 +1595,7 @@ static int scan_assemble(struct supertype *ss,
        return rv;
 }
 
-static int misc_scan(char devmode, int verbose, int export, int test,
-                    char *homehost, char *prefer)
+static int misc_scan(char devmode, struct context *c)
 {
        /* apply --detail or --wait-clean to
         * all devices in /proc/mdstat
@@ -1608,7 +1604,6 @@ static int misc_scan(char devmode, int verbose, int export, int test,
        struct mdstat_ent *e;
        struct map_ent *map = NULL;
        int members;
-       int v = verbose>1?0:verbose+1;
        int rv = 0;
 
        for (members = 0; members <= 1; members++) {
@@ -1633,11 +1628,9 @@ static int misc_scan(char devmode, int verbose, int export, int test,
                                continue;
                        }
                        if (devmode == 'D')
-                               rv |= Detail(name, v,
-                                            export, test,
-                                            homehost, prefer);
+                               rv |= Detail(name, c);
                        else
-                               rv |= WaitClean(name, -1, v);
+                               rv |= WaitClean(name, -1, c->verbose);
                        put_md_name(name);
                }
        }
@@ -1699,9 +1692,7 @@ static int misc_list(struct mddev_dev *devlist,
 
                switch(dv->disposition) {
                case 'D':
-                       rv |= Detail(dv->devname,
-                                    c->brief?1+c->verbose:0,
-                                    c->export, c->test, c->homehost, c->prefer);
+                       rv |= Detail(dv->devname, c);
                        continue;
                case KillOpt: /* Zero superblock */
                        if (ss)