summaryrefslogtreecommitdiff
path: root/io_uring
diff options
context:
space:
mode:
authorYu Kuai <yukuai3@huawei.com>2024-02-29 12:57:07 +0300
committerSasha Levin <sashal@kernel.org>2024-03-27 01:16:29 +0300
commit10b6e8412dc03d691bd950cd1681e42c18b48eea (patch)
tree244bb0842ac3fffd458ff057ae4bad9857105f78 /io_uring
parentcb38ae9ed8e3b8b983cbb27465b4d50471230b56 (diff)
downloadlinux-10b6e8412dc03d691bd950cd1681e42c18b48eea.tar.xz
md/raid1: fix choose next idle in read_balance()
[ Upstream commit 257ac239ffcfd097a9a0732bf5095fb00164f334 ] Commit 12cee5a8a29e ("md/raid1: prevent merging too large request") add the case choose next idle in read_balance(): read_balance: for_each_rdev if(next_seq_sect == this_sector || dist == 0) -> sequential reads best_disk = disk; if (...) choose_next_idle = 1 continue; for_each_rdev -> iterate next rdev if (pending == 0) best_disk = disk; -> choose the next idle disk break; if (choose_next_idle) -> keep using this rdev if there are no other idle disk contine However, commit 2e52d449bcec ("md/raid1: add failfast handling for reads.") remove the code: - /* If device is idle, use it */ - if (pending == 0) { - best_disk = disk; - break; - } Hence choose next idle will never work now, fix this problem by following: 1) don't set best_disk in this case, read_balance() will choose the best disk after iterating all the disks; 2) add 'pending' so that other idle disk will be chosen; 3) add a new local variable 'sequential_disk' to record the disk, and if there is no other idle disk, 'sequential_disk' will be chosen; Fixes: 2e52d449bcec ("md/raid1: add failfast handling for reads.") Co-developed-by: Paul Luse <paul.e.luse@linux.intel.com> Signed-off-by: Paul Luse <paul.e.luse@linux.intel.com> Signed-off-by: Yu Kuai <yukuai3@huawei.com> Reviewed-by: Xiao Ni <xni@redhat.com> Signed-off-by: Song Liu <song@kernel.org> Link: https://lore.kernel.org/r/20240229095714.926789-5-yukuai1@huaweicloud.com Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'io_uring')
0 files changed, 0 insertions, 0 deletions