char devname[20];
devlist.next = NULL;
devlist.used = 0;
- devlist.re_add = 0;
devlist.writemostly = 0;
devlist.devname = devname;
sprintf(devname, "%d:%d", major(stb.st_rdev),
if (next != dv)
continue;
} else if (strcmp(dv->devname, "missing") == 0) {
- if (dv->disposition != 'a' || dv->re_add == 0) {
+ if (dv->disposition != 'A') {
pr_err("'missing' only meaningful "
"with --re-add\n");
goto abort;
dv->devname, dv->disposition);
goto abort;
case 'a':
+ case 'A':
/* add the device */
if (subarray) {
pr_err("Cannot add disks to a"
break;
}
/* FIXME this is a bad test to be using */
- if (!tst->sb &&
- dv->re_add) {
+ if (!tst->sb && dv->disposition == 'A') {
/* we are re-adding a device to a
* completely dead array - have to depend
* on kernel to check
}
continue;
}
- if (dv->re_add) {
+ if (dv->disposition == 'A') {
if (tfd >= 0)
close(tfd);
pr_err("--re-add for %s to %s is not possible\n",
close(dfd);
goto abort;
}
- } else if (dv->re_add) {
+ } else if (dv->disposition == 'A') {
/* this had better be raid1.
* As we are "--re-add"ing we must find a spare slot
* to fill.
devlist.next = NULL;
devlist.used = 0;
- devlist.re_add = 0;
devlist.writemostly = 0;
devlist.devname = devname;
sprintf(devname, "%d:%d", major(devid), minor(devid));
int spare_sharing = 1;
struct supertype *ss = NULL;
int writemostly = 0;
- int re_add = 0;
char *shortopt = short_options;
int dosyslog = 0;
int rebuild_map = 0;
dv->devname = optarg;
dv->disposition = devmode;
dv->writemostly = writemostly;
- dv->re_add = re_add;
dv->used = 0;
dv->next = NULL;
*devlistend = dv;
dv->devname = optarg;
dv->disposition = devmode;
dv->writemostly = writemostly;
- dv->re_add = re_add;
dv->used = 0;
dv->next = NULL;
*devlistend = dv;
case O(MANAGE,'U'):
/* update=devicesize is allowed with --re-add */
- if (devmode != 'a' || re_add != 1) {
+ if (devmode != 'A') {
pr_err("--update in Manage mode only"
" allowed with --re-add.\n");
exit(1);
case O(MANAGE,'a'):
case O(MANAGE,Add): /* add a drive */
devmode = 'a';
- re_add = 0;
continue;
case O(MANAGE,ReAdd):
- devmode = 'a';
- re_add = 1;
+ devmode = 'A';
continue;
case O(MANAGE,'r'): /* remove a drive */
case O(MANAGE,Remove):
/* List of device names - wildcards expanded */
struct mddev_dev {
char *devname;
- int disposition; /* 'a' for add, 'r' for remove, 'f' for fail.
+ int disposition; /* 'a' for add, 'r' for remove, 'f' for fail,
+ * 'A' for re_add.
* Not set for names read from .config
*/
char writemostly; /* 1 for 'set writemostly', 2 for 'clear writemostly' */
- char re_add;
char used; /* set when used */
struct mddev_dev *next;
};