Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d57368af authored by Alexander Lyakas's avatar Alexander Lyakas Committed by NeilBrown
Browse files

md/RAID1: Add missing case for attempting to repair known bad blocks.



When doing resync or repair, attempt to correct bad blocks, according
to WriteErrorSeen policy

Signed-off-by: default avatarAlex Lyakas <alex.bolshoy@gmail.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 895e3c5c
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -2445,6 +2445,18 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
				bio->bi_rw = READ;
				bio->bi_rw = READ;
				bio->bi_end_io = end_sync_read;
				bio->bi_end_io = end_sync_read;
				read_targets++;
				read_targets++;
			} else if (!test_bit(WriteErrorSeen, &rdev->flags) &&
				test_bit(MD_RECOVERY_SYNC, &mddev->recovery) &&
				!test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) {
				/*
				 * The device is suitable for reading (InSync),
				 * but has bad block(s) here. Let's try to correct them,
				 * if we are doing resync or repair. Otherwise, leave
				 * this device alone for this sync request.
				 */
				bio->bi_rw = WRITE;
				bio->bi_end_io = end_sync_write;
				write_targets++;
			}
			}
		}
		}
		if (bio->bi_end_io) {
		if (bio->bi_end_io) {