Assemble: improve messages when restarting a reshape.

If the restarted reshape needs a backup file and we don't have one,
that should be reported before we try to start the array.
Also we shouldn't say the "Cannot grow" but "cannot complete".

Signed-off-by: NeilBrown <neilb@suse.de>
test: include any 'stderr' output in the log file.

Errors from mdadm go to 'stderr', so if there is an array,
copy those to the log file.

Signed-off-by: NeilBrown <neilb@suse.de>
raid6check - fix compile

Recent rearrangement of library code broke 'raid6check' and this
wasn't noticed because 'make everything' doesn't build it.

So fix the breakage and have 'make everything' built it.

Signed-off-by: NeilBrown <neilb@suse.de>
sysfs: fix bugs in new sysfs_wait function.

- 'tv' isn't initialised properly.
- 100?  I'm sure I fixed that already! Seems not.

Signed-off-by: NeilBrown <neilb@suse.de>
revert-reshape: only impose reshape_position tests on raid[456]

This test is irrelevant for RAID10, so restrict it to those
levels in which it is meaningful.

Signed-off-by: NeilBrown <neilb@suse.de>
Stop: improve synchronising of reshape with whole stripes.

It is possible for 'sync_completed' to be further ahead than
we deduced from 'reshape_position'.  However we cannot read it while
the array is frozen, so it is hard to know.

Once that array is unfrozen, check and if sync_completed is ahead of
'sync_max',  push 'sync_max' well ahead if 'sync_completed' so it
will all synchronise up properly.

Signed-off-by: NeilBrown <neilb@suse.de>
tests: add a test for reverting reshapes

Only reverting reshapes that grow the array so far.

Signed-off-by: NeilBrown <neilb@suse.de>
Grow: fix small bug when reshape interrupted.

progress_reshape() may not set reshape_completed if the reshape is
interrupted, so we need to initialize it to the current value before
hand, so the value used afterwards is credible.

Signed-off-by: NeilBrown <neilb@suse.de>
Grow: notice when --stop is synchronising a reshape and don't mess it up.

--stop now tries to wait for a reshape to be at just the right spot.
However for a reducing reshape, mdadm will be running in the
background watching, and might adjust sync_max and mess things up.

So teach "progress_reshape" to notice when "sync_max" is modified, and
leave it alone.

Signed-off-by: NeilBrown <neilb@suse.de>
tests: add test to revert shrinking reshapes.

Signed-off-by: NeilBrown <neilb@suse.de>