Assemble: set stripe_cache_size properly when restarting a reshape.

Reshape with large chunk size can require a large stripe_cache.
We make this work when starting the reshape but not when
restarting at assemble time.  So fix that.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2008-12-18 14:24:41 +11:00
parent 4e9a6ff778
commit acee8e8964
1 changed files with 14 additions and 0 deletions

View File

@ -934,6 +934,20 @@ int Assemble(struct supertype *st, char *mddev, int mdfd,
fprintf(stderr, " and %d spare%s", sparecnt, sparecnt==1?"":"s");
fprintf(stderr, ".\n");
}
if (info.reshape_active &&
info.array.level >= 4 &&
info.array.level <= 6) {
/* might need to increase the size
* of the stripe cache - default is 256
*/
if (256 < 4 * (info.array.chunk_size/4096)) {
struct mdinfo *sra = sysfs_read(mdfd, 0, 0);
if (sra)
sysfs_set_num(sra, NULL,
"stripe_cache_size",
(4 * info.array.chunk_size / 4096) + 1);
}
}
if (must_close) {
int usecs = 1;
close(mdfd);