On 07/19/2017 01:54 PM, Xiao Ni wrote:
----- Original Message -----
From: "Zhilong Liu" <zlliu@xxxxxxxx>
To: "Xiao Ni" <xni@xxxxxxxxxx>, linux-raid@xxxxxxxxxxxxxxx
Cc: "jes sorensen" <jes.sorensen@xxxxxxxxx>
Sent: Tuesday, July 18, 2017 6:34:33 PM
Subject: Re: [PATCH -v3 1/1] mdadm/test: Add one test case for raid5 reshape
On 07/18/2017 04:55 PM, Xiao Ni wrote:
This case trys to allow raid5 reshape to use backwards direction.
It changes chunksize after reshape and stop the raid. Then start
the raid again.
Signed-off-by: Xiao Ni <xni@xxxxxxxxxx>
Suggested-by: Jes Sorensen <jes.sorensen@xxxxxxxxx>
Suggested-by: Zhilong Liu <zlliu@xxxxxxxx>
---
test | 8 ++++++++
tests/02r5grow | 16 ++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/test b/test
index 87e2df2..51da2dc 100755
--- a/test
+++ b/test
@@ -320,6 +320,14 @@ check() {
grep -sq "inactive" /proc/mdstat ||
die "array is not inactive!"
;;
+ # It only can be used when there is only one raid
+ chunk )
+ chunk_size=`cat /proc/mdstat | awk -F',' '/chunk/{print $2}' | awk
'{print $1}' | sed s/k//g`
Hi,
only from my opinion, how about shrink the command:
# awk -F',' '/chunk/{print $2}' /proc/mdstat | awk -F'[a-z]' '{print $1}'
+ if [ $chunk_size -ne $2 ]; then
+ echo >&2 "chunksize is not right"
+ exit 1
+ fi
Yes, you are a shell expert :)
how about using the func die()
[ "$chunk_size" -ne "$2" ] &&
die "chunk should be $2, but is $chunk_size"
I tried this and did a simple test. It gave a error:
[root@dell-per210-01 mdadm]# ./test --tests=02r5grow
Testing on linux-3.10.0-685.el7.x86_64 kernel
tests/02r5grow... FAILED - see /var/tmp/02r5grow.log and /var/tmp/fail02r5grow.log for details
./test: line 80: [: too many arguments
It was introduced by this 20d10b4b. It looks like the check have errors:
if [ ! -z ${array[@]} -a ${#array[@]} -ge 1 ]
Yes, thanks for catching this, this condition would get parsing
error when array[] has few members. it should correct as:
[ ! -z "$array" -a ${#array[@]}] -ge 1 ]
check the array[index](first member) is enough, I should fix it.
Thanks,
-Zhilong
Regards
Xiao
Thanks,
-Zhilong
+ ;;
* )
die "unknown check $1"
;;
diff --git a/tests/02r5grow b/tests/02r5grow
index 386e82e..20db4cd 100644
--- a/tests/02r5grow
+++ b/tests/02r5grow
@@ -34,3 +34,19 @@ check nosync
sh tests/testdev $md0 3 $[size/2] 128
mdadm -S $md0
+
+# create a raid5 array and change the chunk
+mdadm -CR $md0 --level raid5 --metadata=1.1 --chunk=32 --raid-disks 3
--size $[size/2] $dev1 $dev2 $dev3
+check wait
+check state UUU
+check chunk 32
+
+mdadm $md0 --grow --chunk=64
+check reshape
+check wait
+check chunk 64
+
+mdadm -S $md0
+mdadm -As
+check state UUU
+check chunk 64
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html