diff --git a/Incremental.c b/Incremental.c index a94d5fa..833eac7 100644 --- a/Incremental.c +++ b/Incremental.c @@ -950,7 +950,6 @@ static int array_try_spare(char *devname, int *dfdp, struct dev_policy *pol, 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), diff --git a/Manage.c b/Manage.c index a7d6a1e..a596363 100644 --- a/Manage.c +++ b/Manage.c @@ -524,7 +524,7 @@ int Manage_subdevs(char *devname, int fd, 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; @@ -610,6 +610,7 @@ int Manage_subdevs(char *devname, int fd, dv->devname, dv->disposition); goto abort; case 'a': + case 'A': /* add the device */ if (subarray) { pr_err("Cannot add disks to a" @@ -724,8 +725,7 @@ int Manage_subdevs(char *devname, int fd, 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 @@ -857,7 +857,7 @@ int Manage_subdevs(char *devname, int fd, } 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", @@ -943,7 +943,7 @@ int Manage_subdevs(char *devname, int fd, 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. @@ -1269,7 +1269,6 @@ int move_spare(char *from_devname, char *to_devname, dev_t devid) devlist.next = NULL; devlist.used = 0; - devlist.re_add = 0; devlist.writemostly = 0; devlist.devname = devname; sprintf(devname, "%d:%d", major(devid), minor(devid)); diff --git a/mdadm.c b/mdadm.c index fa3da9f..1ab8267 100644 --- a/mdadm.c +++ b/mdadm.c @@ -117,7 +117,6 @@ int main(int argc, char *argv[]) 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; @@ -326,7 +325,6 @@ int main(int argc, char *argv[]) dv->devname = optarg; dv->disposition = devmode; dv->writemostly = writemostly; - dv->re_add = re_add; dv->used = 0; dv->next = NULL; *devlistend = dv; @@ -382,7 +380,6 @@ int main(int argc, char *argv[]) dv->devname = optarg; dv->disposition = devmode; dv->writemostly = writemostly; - dv->re_add = re_add; dv->used = 0; dv->next = NULL; *devlistend = dv; @@ -785,7 +782,7 @@ int main(int argc, char *argv[]) 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); @@ -912,11 +909,9 @@ int main(int argc, char *argv[]) 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): diff --git a/mdadm.h b/mdadm.h index e92b768..ff44312 100644 --- a/mdadm.h +++ b/mdadm.h @@ -377,11 +377,11 @@ struct mddev_ident { /* 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; };