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