linux/drivers
Yu Kuai c916ca3530 md/raid1: Fix data corruption for degraded array with slow disk
read_balance() will avoid reading from slow disks as much as possible,
however, if valid data only lands in slow disks, and a new normal disk
is still in recovery, unrecovered data can be read:

raid1_read_request
 read_balance
  raid1_should_read_first
  -> return false
  choose_best_rdev
  -> normal disk is not recovered, return -1
  choose_bb_rdev
  -> missing the checking of recovery, return the normal disk
 -> read unrecovered data

Root cause is that the checking of recovery is missing in
choose_bb_rdev(). Hence add such checking to fix the problem.

Also fix similar problem in choose_slow_rdev().

Cc: stable@vger.kernel.org
Fixes: 9f3ced7922 ("md/raid1: factor out choose_bb_rdev() from read_balance()")
Fixes: dfa8ecd167 ("md/raid1: factor out choose_slow_rdev() from read_balance()")
Reported-and-tested-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
Closes: https://lore.kernel.org/all/9952f532-2554-44bf-b906-4880b2e88e3a@o2.pl/
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20240803091137.3197008-1-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
2024-08-15 13:38:17 -07:00
..
accel
accessibility
acpi Updates for the interrupt subsystem: 2024-07-22 13:52:05 -07:00
amba
android binder: fix hang of unregistered readers 2024-07-12 11:31:37 +02:00
ata Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
atm
auxdisplay parport: Remove parport_driver.devmodel 2024-07-03 16:44:22 +02:00
base Switch ARM/ARM64 over to the modern per device MSI domains: 2024-07-22 14:02:19 -07:00
bcma
block ublk: fix UBLK_CMD_DEL_DEV_ASYNC handling 2024-07-24 09:51:46 -06:00
bluetooth virtio: features, fixes, cleanups 2024-07-19 11:57:55 -07:00
bus Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
cache
cdrom
cdx
char Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
clk This a large collection of clk driver updates and a handful of new SoC 2024-07-19 12:16:28 -07:00
clocksource clocksource/drivers/realtek: Add timer driver for rtl-otto platforms 2024-07-12 16:07:06 +02:00
comedi
connector
counter Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
cpufreq Power management updates for 6.11-rc1 2024-07-16 15:54:03 -07:00
cpuidle cpuidle: teo: Don't count non-existent intercepts 2024-07-01 18:58:55 +02:00
crypto ARM: 2024-07-20 12:41:03 -07:00
cxl
dax
dca dca: add missing MODULE_DESCRIPTION() macro 2024-07-03 16:40:41 +02:00
devfreq
dio
dma Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
dma-buf - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
dpll
edac - Make error checking of AMD SMN accesses more robust in the callers as 2024-07-15 19:53:07 -07:00
eisa
extcon
firewire firewire: core: move copy_port_status() helper function to TP_fast_assign() block 2024-07-12 14:34:12 +09:00
firmware LoongArch changes for v6.11 2024-07-22 13:44:22 -07:00
fpga
fsi
gnss
gpio virtio: features, fixes, cleanups 2024-07-19 11:57:55 -07:00
gpu - In the series "treewide: Refactor heap related implementation", 2024-07-21 17:56:22 -07:00
greybus greybus: add missing MODULE_DESCRIPTION() macros 2024-07-03 16:40:35 +02:00
hid for-linus-2024071601 2024-07-17 17:28:31 -07:00
hsi
hte
hv mm/memory_hotplug: initialize memmap of !ZONE_DEVICE with PageOffline() instead of PageReserved() 2024-07-03 19:30:18 -07:00
hwmon Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
hwspinlock
hwtracing intel_th: msu-sink: add missing MODULE_DESCRIPTION() 2024-07-03 16:40:30 +02:00
i2c The I2C core gains documentation updates for the testunit, a cleanup 2024-07-19 16:46:26 -07:00
i3c
idle
iio Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
infiniband IOMMU Updates for Linux v6.11 2024-07-19 09:59:58 -07:00
input Input updates for v6.11-rc0 2024-07-19 16:51:39 -07:00
interconnect Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
iommu virtio: features, fixes, cleanups 2024-07-19 11:57:55 -07:00
ipack
irqchip Switch ARM/ARM64 over to the modern per device MSI domains: 2024-07-22 14:02:19 -07:00
isdn
leds - Core Frameworks 2024-07-17 17:51:30 -07:00
macintosh macintosh/therm_windtunnel: fix module unload. 2024-07-11 17:32:31 +10:00
mailbox
mcb mcb: remove unused struct 'mcb_parse_priv' 2024-07-03 16:41:48 +02:00
md md/raid1: Fix data corruption for degraded array with slow disk 2024-08-15 13:38:17 -07:00
media media updates for v6.11-rc1 2024-07-17 18:30:10 -07:00
memory
memstick memstick: rtsx_pci_ms: Remove Realtek PCI memstick driver 2024-07-08 10:59:06 +02:00
message
mfd - New Drivers 2024-07-17 17:42:20 -07:00
misc pci-v6.11-changes 2024-07-19 19:03:18 -07:00
mmc - New Drivers 2024-07-17 17:42:20 -07:00
most
mtd MTD changes: 2024-07-20 11:52:17 -07:00
mux
net Thermal control fix for 6.11-rc1 2024-07-22 12:13:48 -07:00
nfc
ntb
nubus
nvdimm 6.11 updates for libnvdimm 2024-07-20 11:26:02 -07:00
nvme nvme: reorganize nvme_ns_head fields 2024-07-31 07:40:10 -07:00
nvmem Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
of IOMMU Updates for Linux v6.11 2024-07-19 09:59:58 -07:00
opp Merge branches 'pm-opp' and 'pm-tools' 2024-07-15 18:55:14 +02:00
parisc
parport dev/parport: fix the array out-of-bounds risk 2024-07-10 14:59:45 +02:00
pci Switch ARM/ARM64 over to the modern per device MSI domains: 2024-07-22 14:02:19 -07:00
pcmcia
peci
perf arm64 updates for 6.11: 2024-07-15 17:06:19 -07:00
phy USB/Thunderbolt updates for 6.11-rc1 2024-07-19 15:37:48 -07:00
pinctrl Pin control bulk changes for the v6.11 kernel series: 2024-07-21 10:25:59 -07:00
platform - added support for Realtek RTL9302C 2024-07-20 09:03:36 -07:00
pmdomain mdomain: Merge branch fixes into next 2024-07-09 13:12:41 +02:00
pnp
power power sequencing fixes for v6.11-rc1 2024-07-19 14:31:18 -07:00
powercap
pps parport: Remove parport_driver.devmodel 2024-07-03 16:44:22 +02:00
ps3
ptp Networking changes for 6.11. Not much excitement - a handful of large 2024-07-16 19:28:34 -07:00
pwm pwm: axi-pwmgen: add .max_register to regmap 2024-07-11 15:44:40 +02:00
rapidio
ras - The AMD memory controllers data fabric version 4.5 supports 2024-07-15 18:20:24 -07:00
regulator - New Drivers 2024-07-17 17:42:20 -07:00
remoteproc virtio: rename find_vqs_info() op to find_vqs() 2024-07-17 05:20:57 -04:00
reset soc: driver updates for 6.11 2024-07-16 11:35:27 -07:00
rpmsg virtio: rename virtio_find_vqs_info() to virtio_find_vqs() 2024-07-17 05:20:58 -04:00
rtc rtc: stm32: add new st,stm32mp25-rtc compatible and check RIF configuration 2024-07-10 17:15:33 +02:00
s390 s390/dasd: fix error recovery leading to data corruption on ESE devices 2024-08-12 10:31:08 -06:00
sbus sbus: add missing MODULE_DESCRIPTION() macros 2024-07-11 15:42:03 +02:00
scsi for-6.11/block-post-20240722 2024-07-22 11:04:09 -07:00
sh
siox
slimbus slimbus: Fix struct and documentation alignment in stream.c 2024-07-05 10:13:04 +02:00
soc sound updates for 6.11-rc1 2024-07-19 12:39:34 -07:00
soundwire sound updates for 6.11-rc1 2024-07-19 12:39:34 -07:00
spi Char/Misc and other driver changes for 6.11-rc1 2024-07-19 15:55:08 -07:00
spmi spmi: add missing MODULE_DESCRIPTION() macros 2024-07-12 10:44:53 +02:00
ssb
staging - In the series "treewide: Refactor heap related implementation", 2024-07-21 17:56:22 -07:00
target
tc
tee soc: driver updates for 6.11 2024-07-16 11:35:27 -07:00
thermal thermal: core: Allow thermal zones to tell the core to ignore them 2024-07-18 13:35:55 +02:00
thunderbolt
tty TTY/Serial updates for 6.11-rc1 2024-07-19 15:22:14 -07:00
ufs SCSI misc on 20240718 2024-07-19 10:56:58 -07:00
uio
usb pci-v6.11-changes 2024-07-19 19:03:18 -07:00
vdpa vdpa/mlx5: Don't enable non-active VQs in .set_vq_ready() 2024-07-09 08:42:51 -04:00
vfio powerpc updates for 6.11 2024-07-19 21:00:33 -07:00
vhost virtio: features, fixes, cleanups 2024-07-19 11:57:55 -07:00
video - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
virt ARM: 2024-07-20 12:41:03 -07:00
virtio - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
w1
watchdog - New Drivers 2024-07-17 17:42:20 -07:00
xen - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
zorro
Kconfig
Makefile