diff options
-rw-r--r-- | Incremental.c | 8 | ||||
-rw-r--r-- | Manage.c | 16 | ||||
-rw-r--r-- | mdadm.c | 2 | ||||
-rw-r--r-- | mdadm.h | 2 |
4 files changed, 14 insertions, 14 deletions
diff --git a/Incremental.c b/Incremental.c index fbaa29fe..06415ed6 100644 --- a/Incremental.c +++ b/Incremental.c @@ -1278,7 +1278,7 @@ static int try_spare(char *devname, int *dfdp, struct dev_policy *pol, return rv; } -int IncrementalScan(int verbose) +int IncrementalScan(int verbose, char *devnm) { /* look at every device listed in the 'map' file. * If one is found that is not running then: @@ -1298,7 +1298,11 @@ int IncrementalScan(int verbose) mdu_array_info_t array; mdu_bitmap_file_t bmf; struct mdinfo *sra; - int mdfd = open_dev(me->devnm); + int mdfd; + + if (devnm && strcmp(devnm, me->devnm) != 0) + continue; + mdfd = open_dev(me->devnm); if (mdfd < 0) continue; @@ -175,23 +175,19 @@ int Manage_run(char *devname, int fd, int verbose) /* Run the array. Array must already be configured * Requires >= 0.90.0 */ - mdu_param_t param; /* unused */ - int rv = 0; + char nm[32], *nmp; if (md_get_version(fd) < 9000) { pr_err("need md driver version 0.90.0 or later\n"); return 1; } - - if (ioctl(fd, RUN_ARRAY, ¶m)) { - if (verbose >= 0) - pr_err("failed to run array %s: %s\n", - devname, strerror(errno)); + nmp = fd2devnm(fd); + if (!nmp) { + pr_err("Cannot find %s in sysfs!!\n", devname); return 1; } - if (verbose >= 0) - pr_err("started %s\n", devname); - return rv; + strcpy(nm, nmp); + return IncrementalScan(verbose, nm); } int Manage_stop(char *devname, int fd, int verbose, int will_retry) @@ -1535,7 +1535,7 @@ int main(int argc, char *argv[]) pr_err("--incremental --scan --fail not supported.\n"); break; } - rv = IncrementalScan(c.verbose); + rv = IncrementalScan(c.verbose, NULL); } if (!devlist) { if (!rebuild_map && !c.scan) { @@ -1235,7 +1235,7 @@ extern int WaitClean(char *dev, int sock, int verbose); extern int Incremental(char *devname, struct context *c, struct supertype *st); extern void RebuildMap(void); -extern int IncrementalScan(int verbose); +extern int IncrementalScan(int verbose, char *devnm); extern int IncrementalRemove(char *devname, char *path, int verbose); extern int CreateBitmap(char *filename, int force, char uuid[16], unsigned long chunksize, unsigned long daemon_sleep, |