md: fix bug in handling of new_data_offset
authorNeilBrown <neilb@suse.de>
Thu, 19 Jul 2012 05:59:18 +0000 (15:59 +1000)
committerNeilBrown <neilb@suse.de>
Thu, 19 Jul 2012 05:59:18 +0000 (15:59 +1000)
commit25f7fd470bc97bb93d3a674e8c56c4a29063ec97
tree010d5b5cd9ef0d78da903d0baaff15858c40b20d
parent84a1caf1453c3d44050bd22db958af4a7f99315c
md: fix bug in handling of new_data_offset

commit c6563a8c38fde3c1c7fc925a10bde3ca20799301
    md: add possibility to change data-offset for devices.

introduced a 'new_data_offset' attribute which should normally
be the same as 'data_offset', but can be explicitly set to a different
value to allow a reshape operation to move the data.

Unfortunately when the 'data_offset' is explicitly set through
sysfs, the new_data_offset is not also set, so the two would become
out-of-sync incorrectly.

One result of this is that trying to set the 'size' after the
'data_offset' would fail because it is not permitted to set the size
when the 'data_offset' and 'new_data_offset' are different - as that
can be confusing.
Consequently when mdadm tried to do this while assembling an IMSM
array it would fail.

This bug was introduced in 3.5-rc1.

Reported-by: Brian Downing <bdowning@lavos.net>
Bisected-by: Brian Downing <bdowning@lavos.net>
Tested-by: Brian Downing <bdowning@lavos.net>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c