mdadm: fix reshape from RAID5 to RAID6 with backup file
Reshaping a 3-disk RAID5 to 4-disk RAID6 will cause a hang of the resync after the grow. Adding a spare disk to avoid degrading the array when growing is successful, but not successful when supplying a backup file on the command line. If the reshape job is not already running, set the sync_max value to max. Signed-off-by: Nigel Croxon <ncroxon@redhat.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
parent
1fe2e10073
commit
4ae96c8022
7
Grow.c
7
Grow.c
|
@ -931,12 +931,15 @@ int start_reshape(struct mdinfo *sra, int already_running,
|
|||
err = err ?: sysfs_set_num(sra, NULL, "sync_max", sync_max_to_set);
|
||||
if (!already_running && err == 0) {
|
||||
int cnt = 5;
|
||||
int err2;
|
||||
do {
|
||||
err = sysfs_set_str(sra, NULL, "sync_action",
|
||||
"reshape");
|
||||
if (err)
|
||||
err2 = sysfs_set_str(sra, NULL, "sync_max",
|
||||
"max");
|
||||
if (err || err2)
|
||||
sleep(1);
|
||||
} while (err && errno == EBUSY && cnt-- > 0);
|
||||
} while (err && err2 && errno == EBUSY && cnt-- > 0);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue