Incremental: fix adding devices with --incremental
We should use 'info' here, not 'info2'. info2 refers to some other device (There may not even be one).l info is *this* disk. This is particularly important for getting info.disk.state correct, which the kernel depends on to get 're-add' functionality correct. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
0073a6e189
commit
69fe207ed6
|
@ -414,19 +414,19 @@ int Incremental(char *devname, int verbose, int runstop,
|
|||
goto out_unlock;
|
||||
}
|
||||
}
|
||||
info2.disk.major = major(stb.st_rdev);
|
||||
info2.disk.minor = minor(stb.st_rdev);
|
||||
info.disk.major = major(stb.st_rdev);
|
||||
info.disk.minor = minor(stb.st_rdev);
|
||||
/* add disk needs to know about containers */
|
||||
if (st->ss->external)
|
||||
sra->array.level = LEVEL_CONTAINER;
|
||||
err = add_disk(mdfd, st, sra, &info2);
|
||||
err = add_disk(mdfd, st, sra, &info);
|
||||
if (err < 0 && errno == EBUSY) {
|
||||
/* could be another device present with the same
|
||||
* disk.number. Find and reject any such
|
||||
*/
|
||||
find_reject(mdfd, st, sra, info.disk.number,
|
||||
info.events, verbose, chosen_name);
|
||||
err = add_disk(mdfd, st, sra, &info2);
|
||||
err = add_disk(mdfd, st, sra, &info);
|
||||
}
|
||||
if (err < 0) {
|
||||
fprintf(stderr, Name ": failed to add %s to %s: %s.\n",
|
||||
|
|
Loading…
Reference in New Issue