From 71417de6fed75f6c763d27e96b207946bf9e2643 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Wed, 19 Jun 2013 16:33:55 +1000 Subject: [PATCH] Add test for interaction of --assemble with --incr and fix the bug that it found. The refactor of start_array() missed a test. Signed-off-by: NeilBrown --- Assemble.c | 7 +++++-- tests/03assem-incr | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 tests/03assem-incr diff --git a/Assemble.c b/Assemble.c index 8e3c929..383b149 100644 --- a/Assemble.c +++ b/Assemble.c @@ -884,6 +884,7 @@ static int start_array(int mdfd, struct context *c, int clean, char *avail, int start_partial_ok, + int err_ok, int was_forced ) { @@ -892,7 +893,7 @@ static int start_array(int mdfd, unsigned int req_cnt; rv = set_array_info(mdfd, st, content); - if (rv) { + if (rv && !err_ok) { pr_err("failed to set array info for %s: %s\n", mddev, strerror(errno)); return 1; @@ -1706,7 +1707,9 @@ try_again: chosen_drive, devices, okcnt, sparecnt, rebuilding_cnt, c, - clean, avail, start_partial_ok, was_forced); + clean, avail, start_partial_ok, + pre_exist != NULL, + was_forced); if (rv == 1 && !pre_exist) ioctl(mdfd, STOP_ARRAY, NULL); free(devices); diff --git a/tests/03assem-incr b/tests/03assem-incr new file mode 100644 index 0000000..f10a1a4 --- /dev/null +++ b/tests/03assem-incr @@ -0,0 +1,17 @@ +set -x -e + +# Test interaction between -I and -A +# there are locking issue too, but those are hard to test for. +# +# Here just test that a partly "-I" assembled array can +# be completed with "-A" + +for l in 0 1 5 linear +do + mdadm -CR $md0 -l $l -n5 $dev0 $dev1 $dev2 $dev3 $dev4 --assume-clean + mdadm -S md0 + mdadm -I $dev1 + mdadm -I $dev3 + mdadm -A /dev/md0 $dev0 $dev1 $dev2 $dev3 $dev4 + mdadm -S /dev/md0 +done