imsm: Optimize expansion speed when no backup is required
When no reshape backup is required (e.g. OLCE after critical section), check-pointing can use bigger steps than backup space allows for. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
a47e44fb96
commit
8016a6d42e
|
@ -8854,11 +8854,19 @@ static int imsm_manage_reshape(
|
||||||
"migration record (UNIT_SRC_IN_CP_AREA)\n");
|
"migration record (UNIT_SRC_IN_CP_AREA)\n");
|
||||||
goto abort;
|
goto abort;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
/* set next step to use whole border area */
|
||||||
|
border /= next_step;
|
||||||
|
if (border > 1)
|
||||||
|
next_step *= border;
|
||||||
}
|
}
|
||||||
/* When data backed up, checkpoint stored,
|
/* When data backed up, checkpoint stored,
|
||||||
* kick the kernel to reshape unit of data
|
* kick the kernel to reshape unit of data
|
||||||
*/
|
*/
|
||||||
next_step = next_step + sra->reshape_progress;
|
next_step = next_step + sra->reshape_progress;
|
||||||
|
/* limit next step to array max position */
|
||||||
|
if (next_step > max_position)
|
||||||
|
next_step = max_position;
|
||||||
sysfs_set_num(sra, NULL, "suspend_lo", sra->reshape_progress);
|
sysfs_set_num(sra, NULL, "suspend_lo", sra->reshape_progress);
|
||||||
sysfs_set_num(sra, NULL, "suspend_hi", next_step);
|
sysfs_set_num(sra, NULL, "suspend_hi", next_step);
|
||||||
sra->reshape_progress = next_step;
|
sra->reshape_progress = next_step;
|
||||||
|
|
Loading…
Reference in New Issue