Skip to content

Commit 589c375

Browse files
shligitgregkh
authored andcommitted
MD: fix invalid stored role for a disk - try2
commit 9e753ba upstream. Commit d595567 (MD: fix invalid stored role for a disk) broke linear hotadd. Let's only fix the role for disks in raid1/10. Based on Guoqing's original patch. Reported-by: kernel test robot <[email protected]> Cc: Gioh Kim <[email protected]> Cc: Guoqing Jiang <[email protected]> Signed-off-by: Shaohua Li <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent fcd90d7 commit 589c375

File tree

3 files changed

+2
-4
lines changed

3 files changed

+2
-4
lines changed

drivers/md/md.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,10 +1776,6 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
17761776
} else
17771777
set_bit(In_sync, &rdev->flags);
17781778
rdev->raid_disk = role;
1779-
if (role >= mddev->raid_disks) {
1780-
rdev->saved_raid_disk = -1;
1781-
rdev->raid_disk = -1;
1782-
}
17831779
break;
17841780
}
17851781
if (sb->devflags & WriteMostly1)

drivers/md/raid1.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1734,6 +1734,7 @@ static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev)
17341734
*/
17351735
if (rdev->saved_raid_disk >= 0 &&
17361736
rdev->saved_raid_disk >= first &&
1737+
rdev->saved_raid_disk < conf->raid_disks &&
17371738
conf->mirrors[rdev->saved_raid_disk].rdev == NULL)
17381739
first = last = rdev->saved_raid_disk;
17391740

drivers/md/raid10.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,6 +1808,7 @@ static int raid10_add_disk(struct mddev *mddev, struct md_rdev *rdev)
18081808
first = last = rdev->raid_disk;
18091809

18101810
if (rdev->saved_raid_disk >= first &&
1811+
rdev->saved_raid_disk < conf->geo.raid_disks &&
18111812
conf->mirrors[rdev->saved_raid_disk].rdev == NULL)
18121813
mirror = rdev->saved_raid_disk;
18131814
else

0 commit comments

Comments
 (0)