Loading drivers/md/raid10.c +17 −0 Original line number Diff line number Diff line Loading @@ -3201,6 +3201,16 @@ static int run(struct mddev *mddev) continue; disk = conf->mirrors + disk_idx; if (test_bit(Replacement, &rdev->flags)) { if (disk->replacement) goto out_free_conf; disk->replacement = rdev; } else { if (disk->rdev) goto out_free_conf; disk->rdev = rdev; } disk->rdev = rdev; disk_stack_limits(mddev->gendisk, rdev->bdev, rdev->data_offset << 9); Loading Loading @@ -3228,6 +3238,13 @@ static int run(struct mddev *mddev) disk = conf->mirrors + i; if (!disk->rdev && disk->replacement) { /* The replacement is all we have - use it */ disk->rdev = disk->replacement; disk->replacement = NULL; clear_bit(Replacement, &disk->rdev->flags); } if (!disk->rdev || !test_bit(In_sync, &disk->rdev->flags)) { disk->head_position = 0; Loading Loading
drivers/md/raid10.c +17 −0 Original line number Diff line number Diff line Loading @@ -3201,6 +3201,16 @@ static int run(struct mddev *mddev) continue; disk = conf->mirrors + disk_idx; if (test_bit(Replacement, &rdev->flags)) { if (disk->replacement) goto out_free_conf; disk->replacement = rdev; } else { if (disk->rdev) goto out_free_conf; disk->rdev = rdev; } disk->rdev = rdev; disk_stack_limits(mddev->gendisk, rdev->bdev, rdev->data_offset << 9); Loading Loading @@ -3228,6 +3238,13 @@ static int run(struct mddev *mddev) disk = conf->mirrors + i; if (!disk->rdev && disk->replacement) { /* The replacement is all we have - use it */ disk->rdev = disk->replacement; disk->replacement = NULL; clear_bit(Replacement, &disk->rdev->flags); } if (!disk->rdev || !test_bit(In_sync, &disk->rdev->flags)) { disk->head_position = 0; Loading