aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid1.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r--drivers/md/raid1.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 845cf95b612c..a23ffa397ba9 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1027,8 +1027,9 @@ static void error(mddev_t *mddev, mdk_rdev_t *rdev)
1027 } else 1027 } else
1028 set_bit(Faulty, &rdev->flags); 1028 set_bit(Faulty, &rdev->flags);
1029 set_bit(MD_CHANGE_DEVS, &mddev->flags); 1029 set_bit(MD_CHANGE_DEVS, &mddev->flags);
1030 printk(KERN_ALERT "md/raid1:%s: Disk failure on %s, disabling device.\n" 1030 printk(KERN_ALERT
1031 KERN_ALERT "md/raid1:%s: Operation continuing on %d devices.\n", 1031 "md/raid1:%s: Disk failure on %s, disabling device.\n"
1032 "md/raid1:%s: Operation continuing on %d devices.\n",
1032 mdname(mddev), bdevname(rdev->bdev, b), 1033 mdname(mddev), bdevname(rdev->bdev, b),
1033 mdname(mddev), conf->raid_disks - mddev->degraded); 1034 mdname(mddev), conf->raid_disks - mddev->degraded);
1034} 1035}
@@ -1364,10 +1365,10 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio)
1364 */ 1365 */
1365 rdev = conf->mirrors[d].rdev; 1366 rdev = conf->mirrors[d].rdev;
1366 if (sync_page_io(rdev, 1367 if (sync_page_io(rdev,
1367 sect + rdev->data_offset, 1368 sect,
1368 s<<9, 1369 s<<9,
1369 bio->bi_io_vec[idx].bv_page, 1370 bio->bi_io_vec[idx].bv_page,
1370 READ)) { 1371 READ, false)) {
1371 success = 1; 1372 success = 1;
1372 break; 1373 break;
1373 } 1374 }
@@ -1390,10 +1391,10 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio)
1390 rdev = conf->mirrors[d].rdev; 1391 rdev = conf->mirrors[d].rdev;
1391 atomic_add(s, &rdev->corrected_errors); 1392 atomic_add(s, &rdev->corrected_errors);
1392 if (sync_page_io(rdev, 1393 if (sync_page_io(rdev,
1393 sect + rdev->data_offset, 1394 sect,
1394 s<<9, 1395 s<<9,
1395 bio->bi_io_vec[idx].bv_page, 1396 bio->bi_io_vec[idx].bv_page,
1396 WRITE) == 0) 1397 WRITE, false) == 0)
1397 md_error(mddev, rdev); 1398 md_error(mddev, rdev);
1398 } 1399 }
1399 d = start; 1400 d = start;
@@ -1405,10 +1406,10 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio)
1405 continue; 1406 continue;
1406 rdev = conf->mirrors[d].rdev; 1407 rdev = conf->mirrors[d].rdev;
1407 if (sync_page_io(rdev, 1408 if (sync_page_io(rdev,
1408 sect + rdev->data_offset, 1409 sect,
1409 s<<9, 1410 s<<9,
1410 bio->bi_io_vec[idx].bv_page, 1411 bio->bi_io_vec[idx].bv_page,
1411 READ) == 0) 1412 READ, false) == 0)
1412 md_error(mddev, rdev); 1413 md_error(mddev, rdev);
1413 } 1414 }
1414 } else { 1415 } else {
@@ -1488,10 +1489,8 @@ static void fix_read_error(conf_t *conf, int read_disk,
1488 rdev = conf->mirrors[d].rdev; 1489 rdev = conf->mirrors[d].rdev;
1489 if (rdev && 1490 if (rdev &&
1490 test_bit(In_sync, &rdev->flags) && 1491 test_bit(In_sync, &rdev->flags) &&
1491 sync_page_io(rdev, 1492 sync_page_io(rdev, sect, s<<9,
1492 sect + rdev->data_offset, 1493 conf->tmppage, READ, false))
1493 s<<9,
1494 conf->tmppage, READ))
1495 success = 1; 1494 success = 1;
1496 else { 1495 else {
1497 d++; 1496 d++;
@@ -1514,9 +1513,8 @@ static void fix_read_error(conf_t *conf, int read_disk,
1514 rdev = conf->mirrors[d].rdev; 1513 rdev = conf->mirrors[d].rdev;
1515 if (rdev && 1514 if (rdev &&
1516 test_bit(In_sync, &rdev->flags)) { 1515 test_bit(In_sync, &rdev->flags)) {
1517 if (sync_page_io(rdev, 1516 if (sync_page_io(rdev, sect, s<<9,
1518 sect + rdev->data_offset, 1517 conf->tmppage, WRITE, false)
1519 s<<9, conf->tmppage, WRITE)
1520 == 0) 1518 == 0)
1521 /* Well, this device is dead */ 1519 /* Well, this device is dead */
1522 md_error(mddev, rdev); 1520 md_error(mddev, rdev);
@@ -1531,9 +1529,8 @@ static void fix_read_error(conf_t *conf, int read_disk,
1531 rdev = conf->mirrors[d].rdev; 1529 rdev = conf->mirrors[d].rdev;
1532 if (rdev && 1530 if (rdev &&
1533 test_bit(In_sync, &rdev->flags)) { 1531 test_bit(In_sync, &rdev->flags)) {
1534 if (sync_page_io(rdev, 1532 if (sync_page_io(rdev, sect, s<<9,
1535 sect + rdev->data_offset, 1533 conf->tmppage, READ, false)
1536 s<<9, conf->tmppage, READ)
1537 == 0) 1534 == 0)
1538 /* Well, this device is dead */ 1535 /* Well, this device is dead */
1539 md_error(mddev, rdev); 1536 md_error(mddev, rdev);