md: Ensure an md array never has too many devices.
authorNeilBrown <neilb@suse.de>
Fri, 6 Feb 2009 07:02:46 +0000 (18:02 +1100)
committerNeilBrown <neilb@suse.de>
Fri, 6 Feb 2009 07:02:46 +0000 (18:02 +1100)
commitde01dfadf25bf83cfe3d85c163005c4320532658
treedc1cca5a6aa10ecc0fea2fb9f13534685ba8ff61
parent852c8bf484a0e17ee27f413ef26e87f522af5607
md: Ensure an md array never has too many devices.

Each different metadata format supported by md supports a
different maximum number of devices.
We really should be enforcing this maximum in the kernel, but
we aren't quite doing that properly.

We currently only enforce it at the 'hot_add' point, which is an
older interface which is not used by current userspace.

We need to also enforce it at 'add_new_disk' time for active arrays
and at 'do_md_run' time when starting a new array.

So move the test from 'hot_add' into 'bind_rdev_to_array' which is
called from both 'hot_add' and 'add_new_disk, and add a new
test in 'analyse_sbs' which is called from 'do_md_run'.

This bug (or missing feature) has been around "forever" and so
the patch is suitable for any -stable that is currently maintained.

Cc: stable@kernel.org
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c