md/raid1: move rdev->corrected_errors counting
authorNamhyung Kim <namhyung@gmail.com>
Wed, 27 Jul 2011 01:00:36 +0000 (11:00 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 27 Jul 2011 01:00:36 +0000 (11:00 +1000)
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>
drivers/md/raid1.c

index 44069b38d6dd06198b9ccdcccf060c8ae3c820b0..a7e69081187fc864ec217bd5c1a250c2f8d9f6ab 100644 (file)
@@ -1224,9 +1224,7 @@ static int fix_sync_read_error(r1bio_t *r1_bio)
                                 * active, and resync is currently active
                                 */
                                rdev = conf->mirrors[d].rdev;
-                               if (sync_page_io(rdev,
-                                                sect,
-                                                s<<9,
+                               if (sync_page_io(rdev, sect, s<<9,
                                                 bio->bi_io_vec[idx].bv_page,
                                                 READ, false)) {
                                        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)
                                continue;
                        rdev = conf->mirrors[d].rdev;
-                       if (sync_page_io(rdev,
-                                        sect,
-                                        s<<9,
+                       if (sync_page_io(rdev, sect, s<<9,
                                         bio->bi_io_vec[idx].bv_page,
                                         WRITE, false) == 0) {
                                r1_bio->bios[d]->bi_end_io = NULL;
                                rdev_dec_pending(rdev, mddev);
                                md_error(mddev, rdev);
-                       } else
-                               atomic_add(s, &rdev->corrected_errors);
+                       }
                }
                d = start;
                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)
                                continue;
                        rdev = conf->mirrors[d].rdev;
-                       if (sync_page_io(rdev,
-                                        sect,
-                                        s<<9,
+                       if (sync_page_io(rdev, sect, s<<9,
                                         bio->bi_io_vec[idx].bv_page,
                                         READ, false) == 0)
                                md_error(mddev, rdev);
+                       else
+                               atomic_add(s, &rdev->corrected_errors);
                }
                sectors -= s;
                sect += s;