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);
|
||||
|
||||
remove_partitions(dfd);
|
||||
|
||||
tst = dup_super(st);
|
||||
if (dfd < 0 || tst->ss->load_super(tst, dfd, NULL) != 0) {
|
||||
fprintf(stderr, Name ": cannot re-read metadata from %s - aborting\n",
|
||||
|
@ -669,8 +667,6 @@ int Assemble(struct supertype *st, char *mddev,
|
|||
int dfd;
|
||||
dfd = dev_open(devname, O_RDWR|O_EXCL);
|
||||
|
||||
remove_partitions(dfd);
|
||||
|
||||
if (dfd < 0 || tst->ss->load_super(tst, dfd, NULL) != 0) {
|
||||
fprintf(stderr, Name ": cannot re-read metadata from %s - aborting\n",
|
||||
devname);
|
||||
|
@ -1104,6 +1100,12 @@ int Assemble(struct supertype *st, char *mddev,
|
|||
j = chosen_drive;
|
||||
|
||||
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);
|
||||
|
||||
if (rv) {
|
||||
|
|
Loading…
Reference in New Issue