Assemble: call remove_partitions later.
We shouldn't call remove_partitions until we have made a really firm decision to include the device into the array. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
515afde355
commit
321e575910
10
Assemble.c
10
Assemble.c
|
@ -618,8 +618,6 @@ int Assemble(struct supertype *st, char *mddev,
|
||||||
}
|
}
|
||||||
dfd = dev_open(devname, O_RDWR|O_EXCL);
|
dfd = dev_open(devname, O_RDWR|O_EXCL);
|
||||||
|
|
||||||
remove_partitions(dfd);
|
|
||||||
|
|
||||||
tst = dup_super(st);
|
tst = dup_super(st);
|
||||||
if (dfd < 0 || tst->ss->load_super(tst, dfd, NULL) != 0) {
|
if (dfd < 0 || tst->ss->load_super(tst, dfd, NULL) != 0) {
|
||||||
fprintf(stderr, Name ": cannot re-read metadata from %s - aborting\n",
|
fprintf(stderr, Name ": cannot re-read metadata from %s - aborting\n",
|
||||||
|
@ -669,8 +667,6 @@ int Assemble(struct supertype *st, char *mddev,
|
||||||
int dfd;
|
int dfd;
|
||||||
dfd = dev_open(devname, O_RDWR|O_EXCL);
|
dfd = dev_open(devname, O_RDWR|O_EXCL);
|
||||||
|
|
||||||
remove_partitions(dfd);
|
|
||||||
|
|
||||||
if (dfd < 0 || tst->ss->load_super(tst, dfd, NULL) != 0) {
|
if (dfd < 0 || tst->ss->load_super(tst, dfd, NULL) != 0) {
|
||||||
fprintf(stderr, Name ": cannot re-read metadata from %s - aborting\n",
|
fprintf(stderr, Name ": cannot re-read metadata from %s - aborting\n",
|
||||||
devname);
|
devname);
|
||||||
|
@ -1104,6 +1100,12 @@ int Assemble(struct supertype *st, char *mddev,
|
||||||
j = chosen_drive;
|
j = chosen_drive;
|
||||||
|
|
||||||
if (j >= 0 /* && devices[j].uptodate */) {
|
if (j >= 0 /* && devices[j].uptodate */) {
|
||||||
|
int dfd = dev_open(devices[j].devname,
|
||||||
|
O_RDWR|O_EXCL);
|
||||||
|
if (dfd >= 0) {
|
||||||
|
remove_partitions(dfd);
|
||||||
|
close(dfd);
|
||||||
|
}
|
||||||
rv = add_disk(mdfd, st, content, &devices[j].i);
|
rv = add_disk(mdfd, st, content, &devices[j].i);
|
||||||
|
|
||||||
if (rv) {
|
if (rv) {
|
||||||
|
|
Loading…
Reference in New Issue