void usage(void)
{
- fprintf(stderr, "Usage: mdmon [--switch-root dir] /device/name/for/container\n");
+ fprintf(stderr, "Usage: mdmon /device/name/for/container [target_dir]\n");
exit(2);
}
int status = 0;
switch (argc) {
+ case 3:
+ switchroot = argv[2];
case 2:
container_name = argv[1];
break;
- case 4:
- if (strcmp(argv[1], "--switch-root") != 0) {
- fprintf(stderr, "mdmon: unknown argument %s\n", argv[1]);
- usage();
- }
- switchroot = argv[2];
- container_name = argv[3];
- break;
default:
usage();
}
if (strncmp(e->metadata_version, "external:", 9) == 0 &&
!is_subarray(&e->metadata_version[9])) {
devname = devnum2devname(e->devnum);
+ /* update cmdline so this mdmon instance can be
+ * distinguished from others in a call to ps(1)
+ */
+ if (strlen(devname) <= strlen(container_name)) {
+ memset(container_name, 0, strlen(container_name));
+ sprintf(container_name, "%s", devname);
+ }
status |= mdmon(devname, e->devnum, scan,
switchroot);
}
int status;
int ignore;
+ dprintf("starting mdmon for %s in %s\n",
+ devname, switchroot ? : "/");
mdfd = open_dev(devnum);
if (mdfd < 0) {
fprintf(stderr, "mdmon: %s: %s\n", devname,
}
mdi = sysfs_read(mdfd, container->devnum,
- GET_VERSION|GET_LEVEL|GET_DEVS);
+ GET_VERSION|GET_LEVEL|GET_DEVS|SKIP_GONE_DEVS);
if (!mdi) {
fprintf(stderr, "mdmon: failed to load sysfs info for %s\n",