diff options
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r-- | drivers/md/raid1.c | 33 |
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); |