From: Greg Kroah-Hartman Date: Mon, 12 Nov 2018 02:32:19 +0000 (-0800) Subject: 4.14-stable patches X-Git-Tag: v4.19.2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e56a6e39ec450c3bd6abcb8244a9b8c49903001;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: md-fix-invalid-stored-role-for-a-disk-try2.patch --- diff --git a/queue-4.14/md-fix-invalid-stored-role-for-a-disk-try2.patch b/queue-4.14/md-fix-invalid-stored-role-for-a-disk-try2.patch new file mode 100644 index 00000000000..29b29d6b806 --- /dev/null +++ b/queue-4.14/md-fix-invalid-stored-role-for-a-disk-try2.patch @@ -0,0 +1,58 @@ +From 9e753ba9b9b405e3902d9f08aec5f2ea58a0c317 Mon Sep 17 00:00:00 2001 +From: Shaohua Li +Date: Sun, 14 Oct 2018 17:05:07 -0700 +Subject: MD: fix invalid stored role for a disk - try2 + +From: Shaohua Li + +commit 9e753ba9b9b405e3902d9f08aec5f2ea58a0c317 upstream. + +Commit d595567dc4f0 (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 +Cc: Gioh Kim +Cc: Guoqing Jiang +Signed-off-by: Shaohua Li +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/md.c | 4 ---- + drivers/md/raid1.c | 1 + + drivers/md/raid10.c | 1 + + 3 files changed, 2 insertions(+), 4 deletions(-) + +--- a/drivers/md/md.c ++++ b/drivers/md/md.c +@@ -1766,10 +1766,6 @@ static int super_1_validate(struct mddev + } else + set_bit(In_sync, &rdev->flags); + rdev->raid_disk = role; +- if (role >= mddev->raid_disks) { +- rdev->saved_raid_disk = -1; +- rdev->raid_disk = -1; +- } + break; + } + if (sb->devflags & WriteMostly1) +--- a/drivers/md/raid1.c ++++ b/drivers/md/raid1.c +@@ -1725,6 +1725,7 @@ static int raid1_add_disk(struct mddev * + */ + if (rdev->saved_raid_disk >= 0 && + rdev->saved_raid_disk >= first && ++ rdev->saved_raid_disk < conf->raid_disks && + conf->mirrors[rdev->saved_raid_disk].rdev == NULL) + first = last = rdev->saved_raid_disk; + +--- a/drivers/md/raid10.c ++++ b/drivers/md/raid10.c +@@ -1775,6 +1775,7 @@ static int raid10_add_disk(struct mddev + first = last = rdev->raid_disk; + + if (rdev->saved_raid_disk >= first && ++ rdev->saved_raid_disk < conf->geo.raid_disks && + conf->mirrors[rdev->saved_raid_disk].rdev == NULL) + mirror = rdev->saved_raid_disk; + else diff --git a/queue-4.14/series b/queue-4.14/series index 199922c7c76..efe29239ff0 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -220,3 +220,4 @@ btrfs-fix-use-after-free-when-dumping-free-space.patch btrfs-fix-fsync-after-hole-punching-when-using-no-holes-feature.patch net-sched-remove-tca_options-from-policy.patch bpf-wait-for-running-bpf-programs-when-updating-map-in-map.patch +md-fix-invalid-stored-role-for-a-disk-try2.patch