]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
md/raid5: improve removal of extra devices after reshape.
authorNeilBrown <neilb@suse.de>
Tue, 22 May 2012 03:55:33 +0000 (13:55 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 22 May 2012 03:55:33 +0000 (13:55 +1000)
After a reshape which reduced the number of devices we need
to disconnect the extra devices.
The code for this doesn't currently handle 'replacement' devices.
It is very unlikely that such devices will be present, but it is
safest to handle them anyway.

So simplify the handling.  Just clear In_sync and leave it
to remove_and_add_spaces (which will be called soon) to do
the real works.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c

index 8fba57e8f78becae1b1b0216e9a6526d26d9ebe2..d26767246d26ad1d2bb9a2da371ab1bbbdf130fc 100644 (file)
@@ -5755,11 +5755,11 @@ static void raid5_finish_reshape(struct mddev *mddev)
                             d < conf->raid_disks - mddev->delta_disks;
                             d++) {
                                struct md_rdev *rdev = conf->disks[d].rdev;
-                               if (rdev &&
-                                   raid5_remove_disk(mddev, rdev) == 0) {
-                                       sysfs_unlink_rdev(mddev, rdev);
-                                       rdev->raid_disk = -1;
-                               }
+                               if (rdev)
+                                       clear_bit(In_sync, &rdev->flags);
+                               rdev = conf->disks[d].replacement;
+                               if (rdev)
+                                       clear_bit(In_sync, &rdev->flags);
                        }
                }
                mddev->layout = conf->algorithm;