md/raid1: move rdev->corrected_errors counting
Read errors are considered to corrected if write-back and re-read cycle is finished without further problems. Thus moving the rdev-> corrected_errors counting after the re-reading looks more reasonable IMHO. Also included a couple of whitespace fixes on sync_page_io(). Signed-off-by: Namhyung Kim <namhyung@gmail.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
@@ -1224,9 +1224,7 @@ static int fix_sync_read_error(r1bio_t *r1_bio)
|
|||||||
* active, and resync is currently active
|
* active, and resync is currently active
|
||||||
*/
|
*/
|
||||||
rdev = conf->mirrors[d].rdev;
|
rdev = conf->mirrors[d].rdev;
|
||||||
if (sync_page_io(rdev,
|
if (sync_page_io(rdev, sect, s<<9,
|
||||||
sect,
|
|
||||||
s<<9,
|
|
||||||
bio->bi_io_vec[idx].bv_page,
|
bio->bi_io_vec[idx].bv_page,
|
||||||
READ, false)) {
|
READ, false)) {
|
||||||
success = 1;
|
success = 1;
|
||||||
@@ -1261,16 +1259,13 @@ static int fix_sync_read_error(r1bio_t *r1_bio)
|
|||||||
if (r1_bio->bios[d]->bi_end_io != end_sync_read)
|
if (r1_bio->bios[d]->bi_end_io != end_sync_read)
|
||||||
continue;
|
continue;
|
||||||
rdev = conf->mirrors[d].rdev;
|
rdev = conf->mirrors[d].rdev;
|
||||||
if (sync_page_io(rdev,
|
if (sync_page_io(rdev, sect, s<<9,
|
||||||
sect,
|
|
||||||
s<<9,
|
|
||||||
bio->bi_io_vec[idx].bv_page,
|
bio->bi_io_vec[idx].bv_page,
|
||||||
WRITE, false) == 0) {
|
WRITE, false) == 0) {
|
||||||
r1_bio->bios[d]->bi_end_io = NULL;
|
r1_bio->bios[d]->bi_end_io = NULL;
|
||||||
rdev_dec_pending(rdev, mddev);
|
rdev_dec_pending(rdev, mddev);
|
||||||
md_error(mddev, rdev);
|
md_error(mddev, rdev);
|
||||||
} else
|
}
|
||||||
atomic_add(s, &rdev->corrected_errors);
|
|
||||||
}
|
}
|
||||||
d = start;
|
d = start;
|
||||||
while (d != r1_bio->read_disk) {
|
while (d != r1_bio->read_disk) {
|
||||||
@@ -1280,12 +1275,12 @@ static int fix_sync_read_error(r1bio_t *r1_bio)
|
|||||||
if (r1_bio->bios[d]->bi_end_io != end_sync_read)
|
if (r1_bio->bios[d]->bi_end_io != end_sync_read)
|
||||||
continue;
|
continue;
|
||||||
rdev = conf->mirrors[d].rdev;
|
rdev = conf->mirrors[d].rdev;
|
||||||
if (sync_page_io(rdev,
|
if (sync_page_io(rdev, sect, s<<9,
|
||||||
sect,
|
|
||||||
s<<9,
|
|
||||||
bio->bi_io_vec[idx].bv_page,
|
bio->bi_io_vec[idx].bv_page,
|
||||||
READ, false) == 0)
|
READ, false) == 0)
|
||||||
md_error(mddev, rdev);
|
md_error(mddev, rdev);
|
||||||
|
else
|
||||||
|
atomic_add(s, &rdev->corrected_errors);
|
||||||
}
|
}
|
||||||
sectors -= s;
|
sectors -= s;
|
||||||
sect += s;
|
sect += s;
|
||||||
|
Reference in New Issue
Block a user