From: Adam Kwolek Date: Thu, 9 Jun 2011 03:00:56 +0000 (+1000) Subject: imsm: Optimize expansion speed when no backup is required X-Git-Tag: mdadm-3.2.2~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8016a6d42ecef8bff5b6f9d0020ae549e4324188;p=thirdparty%2Fmdadm.git 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 Signed-off-by: NeilBrown --- diff --git a/super-intel.c b/super-intel.c index 292584b1..5c840ec3 100644 --- a/super-intel.c +++ b/super-intel.c @@ -8854,11 +8854,19 @@ static int imsm_manage_reshape( "migration record (UNIT_SRC_IN_CP_AREA)\n"); 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, * kick the kernel to reshape unit of data */ 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_hi", next_step); sra->reshape_progress = next_step;