NeilBrown: Assemble: set stripe_cache_size properly when restarting a reshape.
Martin F. Krafft
madduck at alioth.debian.org
Mon Feb 16 11:24:11 UTC 2009
Module: mdadm
Branch: build
Commit: acee8e896406b686d4b4f12bb748352d20ef83a5
URL: http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=acee8e896406b686d4b4f12bb748352d20ef83a5
Author: NeilBrown <neilb at suse.de>
Date: Thu Dec 18 14:24:41 2008 +1100
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 at suse.de>
---
Assemble.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/Assemble.c b/Assemble.c
index 3ee028b..0cdeeda 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -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);
More information about the pkg-mdadm-commits
mailing list