|
@@ -5517,7 +5517,6 @@ static int raid5_start_reshape(mddev_t *mddev)
|
|
|
raid5_conf_t *conf = mddev->private;
|
|
|
mdk_rdev_t *rdev;
|
|
|
int spares = 0;
|
|
|
- int added_devices = 0;
|
|
|
unsigned long flags;
|
|
|
|
|
|
if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
|
|
@@ -5571,34 +5570,36 @@ static int raid5_start_reshape(mddev_t *mddev)
|
|
|
* to correctly record the "partially reconstructed" state of
|
|
|
* such devices during the reshape and confusion could result.
|
|
|
*/
|
|
|
- if (mddev->delta_disks >= 0)
|
|
|
- list_for_each_entry(rdev, &mddev->disks, same_set)
|
|
|
- if (rdev->raid_disk < 0 &&
|
|
|
- !test_bit(Faulty, &rdev->flags)) {
|
|
|
- if (raid5_add_disk(mddev, rdev) == 0) {
|
|
|
- char nm[20];
|
|
|
- if (rdev->raid_disk >= conf->previous_raid_disks) {
|
|
|
- set_bit(In_sync, &rdev->flags);
|
|
|
- added_devices++;
|
|
|
+ if (mddev->delta_disks >= 0) {
|
|
|
+ int added_devices = 0;
|
|
|
+ list_for_each_entry(rdev, &mddev->disks, same_set)
|
|
|
+ if (rdev->raid_disk < 0 &&
|
|
|
+ !test_bit(Faulty, &rdev->flags)) {
|
|
|
+ if (raid5_add_disk(mddev, rdev) == 0) {
|
|
|
+ char nm[20];
|
|
|
+ if (rdev->raid_disk
|
|
|
+ >= conf->previous_raid_disks) {
|
|
|
+ set_bit(In_sync, &rdev->flags);
|
|
|
+ added_devices++;
|
|
|
+ } else
|
|
|
+ rdev->recovery_offset = 0;
|
|
|
+ sprintf(nm, "rd%d", rdev->raid_disk);
|
|
|
+ if (sysfs_create_link(&mddev->kobj,
|
|
|
+ &rdev->kobj, nm))
|
|
|
+ /* Failure here is OK */;
|
|
|
} else
|
|
|
- rdev->recovery_offset = 0;
|
|
|
- sprintf(nm, "rd%d", rdev->raid_disk);
|
|
|
- if (sysfs_create_link(&mddev->kobj,
|
|
|
- &rdev->kobj, nm))
|
|
|
- /* Failure here is OK */;
|
|
|
- } else
|
|
|
- break;
|
|
|
- } else if (rdev->raid_disk >= conf->previous_raid_disks
|
|
|
- && !test_bit(Faulty, &rdev->flags)) {
|
|
|
- /* This is a spare that was manually added */
|
|
|
- set_bit(In_sync, &rdev->flags);
|
|
|
- added_devices++;
|
|
|
- }
|
|
|
+ break;
|
|
|
+ } else if (rdev->raid_disk >= conf->previous_raid_disks
|
|
|
+ && !test_bit(Faulty, &rdev->flags)) {
|
|
|
+ /* This is a spare that was manually added */
|
|
|
+ set_bit(In_sync, &rdev->flags);
|
|
|
+ added_devices++;
|
|
|
+ }
|
|
|
|
|
|
- /* When a reshape changes the number of devices, ->degraded
|
|
|
- * is measured against the larger of the pre and post number of
|
|
|
- * devices.*/
|
|
|
- if (mddev->delta_disks > 0) {
|
|
|
+ /* When a reshape changes the number of devices,
|
|
|
+ * ->degraded is measured against the larger of the
|
|
|
+ * pre and post number of devices.
|
|
|
+ */
|
|
|
spin_lock_irqsave(&conf->device_lock, flags);
|
|
|
mddev->degraded += (conf->raid_disks - conf->previous_raid_disks)
|
|
|
- added_devices;
|