summaryrefslogtreecommitdiff
path: root/drivers/md/raid1.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2026-05-29 07:43:00 +0200
committerYu Kuai <yukuai@fygo.io>2026-05-31 19:09:19 +0800
commit6e3b0b91334d1dfaa20ca55eac835f5945a3b7c8 (patch)
tree37e4ed146bc4b95c90465df57c073c92db9d3101 /drivers/md/raid1.c
parentfcba8031327ddac251671fdc1be5399786b8dda7 (diff)
downloadlinux-next-6e3b0b91334d1dfaa20ca55eac835f5945a3b7c8.tar.gz
linux-next-6e3b0b91334d1dfaa20ca55eac835f5945a3b7c8.zip
md/raid1: move the exceed_read_errors condition out of fix_read_error
This condition much better fits into the only caller, limiting fix_read_error to actually fix up data devices after a read error. Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20260529054308.2720300-3-hch@lst.de Signed-off-by: Yu Kuai <yukuai@fygo.io>
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r--drivers/md/raid1.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 98476ab96c52..85a17909d8fe 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2418,11 +2418,6 @@ static void fix_read_error(struct r1conf *conf, struct r1bio *r1_bio)
struct mddev *mddev = conf->mddev;
struct md_rdev *rdev = conf->mirrors[read_disk].rdev;
- if (exceed_read_errors(mddev, rdev)) {
- r1_bio->bios[r1_bio->read_disk] = IO_BLOCKED;
- return;
- }
-
while(sectors) {
int s = sectors;
int d = read_disk;
@@ -2659,7 +2654,10 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio)
md_error(mddev, rdev);
} else {
freeze_array(conf, 1);
- fix_read_error(conf, r1_bio);
+ if (exceed_read_errors(mddev, rdev))
+ r1_bio->bios[r1_bio->read_disk] = IO_BLOCKED;
+ else
+ fix_read_error(conf, r1_bio);
unfreeze_array(conf);
}