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:
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;
/* 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)
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) {
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,