From eec3f887856664e224cdd97d3e4d609766f26a8a Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 9 Jul 2012 17:20:00 +1000 Subject: [PATCH] change Examine to take a struct context Signed-off-by: NeilBrown --- Examine.c | 37 ++++++++++++++++++------------------- mdadm.c | 4 +--- mdadm.h | 4 ++-- 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/Examine.c b/Examine.c index 353ad1c..b939843 100644 --- a/Examine.c +++ b/Examine.c @@ -30,10 +30,9 @@ #endif #include "md_u.h" #include "md_p.h" -int Examine(struct mddev_dev *devlist, int brief, int verbose, - int export, int scan, - int SparcAdjust, struct supertype *forcest, - char *homehost) +int Examine(struct mddev_dev *devlist, + struct context *c, + struct supertype *forcest) { /* Read the raid superblock from a device and @@ -69,7 +68,7 @@ int Examine(struct mddev_dev *devlist, int brief, int verbose, fd = dev_open(devlist->devname, O_RDONLY); if (fd < 0) { - if (!scan) { + if (!c->scan) { pr_err("cannot open %s: %s\n", devlist->devname, strerror(errno)); rv = 1; @@ -91,18 +90,18 @@ int Examine(struct mddev_dev *devlist, int brief, int verbose, st->ignore_hw_compat = 1; if (!container) err = st->ss->load_super(st, fd, - (brief||scan) ? NULL + (c->brief||c->scan) ? NULL :devlist->devname); if (err && st->ss->load_container) { err = st->ss->load_container(st, fd, - (brief||scan) ? NULL + (c->brief||c->scan) ? NULL :devlist->devname); if (!err) have_container = 1; } st->ignore_hw_compat = 0; } else { - if (!brief) { + if (!c->brief) { pr_err("No md superblock detected on %s.\n", devlist->devname); rv = 1; } @@ -113,16 +112,16 @@ int Examine(struct mddev_dev *devlist, int brief, int verbose, if (err) continue; - if (SparcAdjust) + if (c->SparcAdjust) st->ss->update_super(st, NULL, "sparc2.2", devlist->devname, 0, 0, NULL); /* Ok, its good enough to try, though the checksum could be wrong */ - if (brief && st->ss->brief_examine_super == NULL) { - if (!scan) + if (c->brief && st->ss->brief_examine_super == NULL) { + if (!c->scan) pr_err("No brief listing for %s on %s\n", st->ss->name, devlist->devname); - } else if (brief) { + } else if (c->brief) { struct array *ap; char *d; for (ap=arrays; ap; ap=ap->next) { @@ -145,27 +144,27 @@ int Examine(struct mddev_dev *devlist, int brief, int verbose, ap->spares++; d = dl_strdup(devlist->devname); dl_add(ap->devs, d); - } else if (export) { + } else if (c->export) { if (st->ss->export_examine_super) st->ss->export_examine_super(st); st->ss->free_super(st); } else { printf("%s:\n",devlist->devname); - st->ss->examine_super(st, homehost); + st->ss->examine_super(st, c->homehost); st->ss->free_super(st); } } - if (brief) { + if (c->brief) { struct array *ap; for (ap=arrays; ap; ap=ap->next) { char sep='='; char *d; int newline = 0; - ap->st->ss->brief_examine_super(ap->st, verbose > 0); + ap->st->ss->brief_examine_super(ap->st, c->verbose > 0); if (ap->spares) newline += printf(" spares=%d", ap->spares); - if (verbose > 0) { + if (c->verbose > 0) { newline += printf(" devices"); for (d=dl_next(ap->devs); d!= ap->devs; d=dl_next(d)) { printf("%c%s", sep, d); @@ -175,11 +174,11 @@ int Examine(struct mddev_dev *devlist, int brief, int verbose, if (ap->st->ss->brief_examine_subarrays) { if (newline) printf("\n"); - ap->st->ss->brief_examine_subarrays(ap->st, verbose); + ap->st->ss->brief_examine_subarrays(ap->st, c->verbose); } ap->st->ss->free_super(ap->st); /* FIXME free ap */ - if (ap->spares || verbose > 0) + if (ap->spares || c->verbose > 0) printf("\n"); } } diff --git a/mdadm.c b/mdadm.c index 858e9a1..3746249 100644 --- a/mdadm.c +++ b/mdadm.c @@ -1354,9 +1354,7 @@ int main(int argc, char *argv[]) pr_err("No devices listed in %s\n", configfile?configfile:DefaultConfFile); exit(1); } - rv = Examine(devlist, c.brief, c.verbose, - 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) { diff --git a/mdadm.h b/mdadm.h index ecd9240..32d8e9e 100644 --- a/mdadm.h +++ b/mdadm.h @@ -1116,8 +1116,8 @@ extern int Create(struct supertype *st, char *mddev, extern int Detail(char *dev, int brief, int export, int test, char *homehost, char *prefer); extern int Detail_Platform(struct superswitch *ss, int scan, int verbose); extern int Query(char *dev); -extern int Examine(struct mddev_dev *devlist, int brief, int verbose, int export, int scan, - int SparcAdjust, struct supertype *forcest, char *homehost); +extern int Examine(struct mddev_dev *devlist, struct context *c, + struct supertype *forcest); extern int Monitor(struct mddev_dev *devlist, char *mailaddr, char *alert_cmd, int period, int daemonise, int scan, int oneshot,