]> git.karo-electronics.de Git - karo-tx-linux.git/commit
md: fix two bugs when attempting to resize RAID0 array.
authorNeilBrown <neilb@suse.de>
Thu, 21 Feb 2013 03:33:17 +0000 (14:33 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Mar 2013 18:29:49 +0000 (11:29 -0700)
commitc443082d1998879713ecf9f97ee4ba8c76f8b7f0
tree37f83d7390c5b3abc206ee45a5d327cb9b5ce5bb
parent517557f2323d11a1a355e9c9155a1e315d87d487
md: fix two bugs when attempting to resize RAID0 array.

commit a64685399181780998281fe07309a94b25dd24c3 upstream.

You cannot resize a RAID0 array (in terms of making the devices
bigger), but the code doesn't entirely stop you.
So:

 disable setting of the available size on each device for
 RAID0 and Linear devices.  This must not change as doing so
 can change the effective layout of data.

 Make sure that the size that raid0_size() reports is accurate,
 but rounding devices sizes to chunk sizes.  As the device sizes
 cannot change now, this isn't so important, but it is best to be
 safe.

Without this change:
  mdadm --grow /dev/md0 -z max
  mdadm --grow /dev/md0 -Z max
  then read to the end of the array

can cause a BUG in a RAID0 array.

These bugs have been present ever since it became possible
to resize any device, which is a long time.  So the fix is
suitable for any -stable kerenl.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/md.c
drivers/md/raid0.c