Commit 9d3d8011 authored by Namhyung Kim's avatar Namhyung Kim Committed by NeilBrown

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: default avatarNamhyung Kim <namhyung@gmail.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 65a06f06
...@@ -1224,9 +1224,7 @@ static int fix_sync_read_error(r1bio_t *r1_bio) ...@@ -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) ...@@ -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) ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment