md: manage redundancy group in sysfs when changing level.
commitda7d96769c18cdf526b7c0da973fcd60cb925e57
authorNeilBrown <neilb@suse.de>
Wed, 14 Apr 2010 07:15:37 +0000 (14 17:15 +1000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Jul 2010 18:22:30 +0000 (5 11:22 -0700)
treeee0d6b0435da1b1757166de148045c4ae3ee20da
parent3bbcbb8c48b2e8e7afa7795161807c1a43b7c02c
md: manage redundancy group in sysfs when changing level.

commit a64c876fd357906a1f7193723866562ad290654c upstream.

Some levels expect the 'redundancy group' to be present,
others don't.
So when we change level of an array we might need to
add or remove this group.

This requires fixing up the current practice of overloading ->private
to indicate (when ->pers == NULL) that something needs to be removed.
So create a new ->to_remove to fill that role.

When changing levels, we may need to add or remove attributes.  When
changing RAID5 -> RAID6, we both add and remove the same thing.  It is
important to catch this and optimise it out as the removal is delayed
until a lock is released, so trying to add immediately would cause
problems.

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