diff options
author | NeilBrown <neilb@suse.de> | 2010-11-30 16:56:01 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-03-10 17:21:19 +1100 |
commit | 321e575910214cb66212a436729c18736542f6bb (patch) | |
tree | 2147687e074814b7edb25b060baf9d7d0e0c43cd | |
parent | 515afde355330a2a7643e979418e4d586504650c (diff) | |
download | mdadm-321e575910214cb66212a436729c18736542f6bb.tar.gz |
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>
-rw-r--r-- | Assemble.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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) { |