NeilBrown: Grow: don't make 'blocks' too large during in-place reshape.
Martin F. Krafft
madduck at alioth.debian.org
Wed Jan 27 02:01:58 UTC 2010
Module: mdadm
Branch: master
Commit: eba7152931708db1d3049030e0a1ffa4ed174373
URL: http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=eba7152931708db1d3049030e0a1ffa4ed174373
Author: NeilBrown <neilb at suse.de>
Date: Fri Oct 16 17:02:34 2009 +1100
Grow: don't make 'blocks' too large during in-place reshape.
On small (test) arrays, multiplying by 16 can make the 'chunk' size
larger than half the array, which is a problem.
Signed-off-by: NeilBrown <neilb at suse.de>
---
Grow.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/Grow.c b/Grow.c
index c0fa566..043e28f 100644
--- a/Grow.c
+++ b/Grow.c
@@ -892,9 +892,13 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
/* LCM == product / GCD */
blocks = ochunk/512 * nchunk/512 * odata * ndata / a;
- if (ndata == odata)
- blocks *= 16;
- else
+ if (ndata == odata) {
+ /* Make 'blocks' bigger for better throughput, but
+ * not so big that we reject it below.
+ */
+ if (blocks * 32 < sra->component_size)
+ blocks *= 16;
+ } else
fprintf(stderr, Name ": Need to backup %luK of critical "
"section..\n", blocks/2);
More information about the pkg-mdadm-commits
mailing list