From: Greg Kroah-Hartman Date: Mon, 12 Nov 2018 02:32:35 +0000 (-0800) Subject: 4.4-stable patches X-Git-Tag: v4.19.2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b69f8bab6e2c78683d7461da167ea968b45678d3;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: md-fix-invalid-stored-role-for-a-disk-try2.patch --- diff --git a/queue-4.4/md-fix-invalid-stored-role-for-a-disk-try2.patch b/queue-4.4/md-fix-invalid-stored-role-for-a-disk-try2.patch new file mode 100644 index 00000000000..53e5015f818 --- /dev/null +++ b/queue-4.4/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 +@@ -1670,10 +1670,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 +@@ -1605,6 +1605,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 +@@ -1737,6 +1737,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.4/series b/queue-4.4/series index 514d9d2cb24..c6694202355 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -96,3 +96,4 @@ btrfs-fix-wrong-dentries-after-fsync-of-file-that-got-its-parent-replaced.patch btrfs-qgroup-dirty-all-qgroups-before-rescan.patch btrfs-fix-null-pointer-dereference-on-compressed-write-path-error.patch btrfs-set-max_extent_size-properly.patch +md-fix-invalid-stored-role-for-a-disk-try2.patch