diff options
-rw-r--r-- | drivers/md/raid10.c | 72 |
1 files changed, 42 insertions, 30 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index a1d727610a49..e0742c439484 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -285,7 +285,8 @@ static void raid10_end_read_request(struct bio *bio, int error) | |||
285 | */ | 285 | */ |
286 | char b[BDEVNAME_SIZE]; | 286 | char b[BDEVNAME_SIZE]; |
287 | if (printk_ratelimit()) | 287 | if (printk_ratelimit()) |
288 | printk(KERN_ERR "raid10: %s: rescheduling sector %llu\n", | 288 | printk(KERN_ERR "md/raid10:%s: %s: rescheduling sector %llu\n", |
289 | mdname(conf->mddev), | ||
289 | bdevname(conf->mirrors[dev].rdev->bdev,b), (unsigned long long)r10_bio->sector); | 290 | bdevname(conf->mirrors[dev].rdev->bdev,b), (unsigned long long)r10_bio->sector); |
290 | reschedule_retry(r10_bio); | 291 | reschedule_retry(r10_bio); |
291 | } | 292 | } |
@@ -831,8 +832,8 @@ static int make_request(mddev_t *mddev, struct bio * bio) | |||
831 | bio_pair_release(bp); | 832 | bio_pair_release(bp); |
832 | return 0; | 833 | return 0; |
833 | bad_map: | 834 | bad_map: |
834 | printk("raid10_make_request bug: can't convert block across chunks" | 835 | printk("md/raid10:%s: make_request bug: can't convert block across chunks" |
835 | " or bigger than %dk %llu %d\n", chunk_sects/2, | 836 | " or bigger than %dk %llu %d\n", mdname(mddev), chunk_sects/2, |
836 | (unsigned long long)bio->bi_sector, bio->bi_size >> 10); | 837 | (unsigned long long)bio->bi_sector, bio->bi_size >> 10); |
837 | 838 | ||
838 | bio_io_error(bio); | 839 | bio_io_error(bio); |
@@ -1031,9 +1032,10 @@ static void error(mddev_t *mddev, mdk_rdev_t *rdev) | |||
1031 | } | 1032 | } |
1032 | set_bit(Faulty, &rdev->flags); | 1033 | set_bit(Faulty, &rdev->flags); |
1033 | set_bit(MD_CHANGE_DEVS, &mddev->flags); | 1034 | set_bit(MD_CHANGE_DEVS, &mddev->flags); |
1034 | printk(KERN_ALERT "raid10: Disk failure on %s, disabling device.\n" | 1035 | printk(KERN_ALERT "md/raid10:%s: Disk failure on %s, disabling device.\n" |
1035 | "raid10: Operation continuing on %d devices.\n", | 1036 | KERN_ALERT "md/raid10:%s: Operation continuing on %d devices.\n", |
1036 | bdevname(rdev->bdev,b), conf->raid_disks - mddev->degraded); | 1037 | mdname(mddev), bdevname(rdev->bdev, b), |
1038 | mdname(mddev), conf->raid_disks - mddev->degraded); | ||
1037 | } | 1039 | } |
1038 | 1040 | ||
1039 | static void print_conf(conf_t *conf) | 1041 | static void print_conf(conf_t *conf) |
@@ -1041,19 +1043,19 @@ static void print_conf(conf_t *conf) | |||
1041 | int i; | 1043 | int i; |
1042 | mirror_info_t *tmp; | 1044 | mirror_info_t *tmp; |
1043 | 1045 | ||
1044 | printk("RAID10 conf printout:\n"); | 1046 | printk(KERN_DEBUG "RAID10 conf printout:\n"); |
1045 | if (!conf) { | 1047 | if (!conf) { |
1046 | printk("(!conf)\n"); | 1048 | printk(KERN_DEBUG "(!conf)\n"); |
1047 | return; | 1049 | return; |
1048 | } | 1050 | } |
1049 | printk(" --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, | 1051 | printk(KERN_DEBUG " --- wd:%d rd:%d\n", conf->raid_disks - conf->mddev->degraded, |
1050 | conf->raid_disks); | 1052 | conf->raid_disks); |
1051 | 1053 | ||
1052 | for (i = 0; i < conf->raid_disks; i++) { | 1054 | for (i = 0; i < conf->raid_disks; i++) { |
1053 | char b[BDEVNAME_SIZE]; | 1055 | char b[BDEVNAME_SIZE]; |
1054 | tmp = conf->mirrors + i; | 1056 | tmp = conf->mirrors + i; |
1055 | if (tmp->rdev) | 1057 | if (tmp->rdev) |
1056 | printk(" disk %d, wo:%d, o:%d, dev:%s\n", | 1058 | printk(KERN_DEBUG " disk %d, wo:%d, o:%d, dev:%s\n", |
1057 | i, !test_bit(In_sync, &tmp->rdev->flags), | 1059 | i, !test_bit(In_sync, &tmp->rdev->flags), |
1058 | !test_bit(Faulty, &tmp->rdev->flags), | 1060 | !test_bit(Faulty, &tmp->rdev->flags), |
1059 | bdevname(tmp->rdev->bdev,b)); | 1061 | bdevname(tmp->rdev->bdev,b)); |
@@ -1502,13 +1504,14 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) | |||
1502 | if (cur_read_error_count > max_read_errors) { | 1504 | if (cur_read_error_count > max_read_errors) { |
1503 | rcu_read_unlock(); | 1505 | rcu_read_unlock(); |
1504 | printk(KERN_NOTICE | 1506 | printk(KERN_NOTICE |
1505 | "raid10: %s: Raid device exceeded " | 1507 | "md/raid10:%s: %s: Raid device exceeded " |
1506 | "read_error threshold " | 1508 | "read_error threshold " |
1507 | "[cur %d:max %d]\n", | 1509 | "[cur %d:max %d]\n", |
1510 | mdname(mddev), | ||
1508 | b, cur_read_error_count, max_read_errors); | 1511 | b, cur_read_error_count, max_read_errors); |
1509 | printk(KERN_NOTICE | 1512 | printk(KERN_NOTICE |
1510 | "raid10: %s: Failing raid " | 1513 | "md/raid10:%s: %s: Failing raid " |
1511 | "device\n", b); | 1514 | "device\n", mdname(mddev), b); |
1512 | md_error(mddev, conf->mirrors[d].rdev); | 1515 | md_error(mddev, conf->mirrors[d].rdev); |
1513 | return; | 1516 | return; |
1514 | } | 1517 | } |
@@ -1578,15 +1581,16 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) | |||
1578 | == 0) { | 1581 | == 0) { |
1579 | /* Well, this device is dead */ | 1582 | /* Well, this device is dead */ |
1580 | printk(KERN_NOTICE | 1583 | printk(KERN_NOTICE |
1581 | "raid10:%s: read correction " | 1584 | "md/raid10:%s: read correction " |
1582 | "write failed" | 1585 | "write failed" |
1583 | " (%d sectors at %llu on %s)\n", | 1586 | " (%d sectors at %llu on %s)\n", |
1584 | mdname(mddev), s, | 1587 | mdname(mddev), s, |
1585 | (unsigned long long)(sect+ | 1588 | (unsigned long long)(sect+ |
1586 | rdev->data_offset), | 1589 | rdev->data_offset), |
1587 | bdevname(rdev->bdev, b)); | 1590 | bdevname(rdev->bdev, b)); |
1588 | printk(KERN_NOTICE "raid10:%s: failing " | 1591 | printk(KERN_NOTICE "md/raid10:%s: %s: failing " |
1589 | "drive\n", | 1592 | "drive\n", |
1593 | mdname(mddev), | ||
1590 | bdevname(rdev->bdev, b)); | 1594 | bdevname(rdev->bdev, b)); |
1591 | md_error(mddev, rdev); | 1595 | md_error(mddev, rdev); |
1592 | } | 1596 | } |
@@ -1614,20 +1618,21 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) | |||
1614 | READ) == 0) { | 1618 | READ) == 0) { |
1615 | /* Well, this device is dead */ | 1619 | /* Well, this device is dead */ |
1616 | printk(KERN_NOTICE | 1620 | printk(KERN_NOTICE |
1617 | "raid10:%s: unable to read back " | 1621 | "md/raid10:%s: unable to read back " |
1618 | "corrected sectors" | 1622 | "corrected sectors" |
1619 | " (%d sectors at %llu on %s)\n", | 1623 | " (%d sectors at %llu on %s)\n", |
1620 | mdname(mddev), s, | 1624 | mdname(mddev), s, |
1621 | (unsigned long long)(sect+ | 1625 | (unsigned long long)(sect+ |
1622 | rdev->data_offset), | 1626 | rdev->data_offset), |
1623 | bdevname(rdev->bdev, b)); | 1627 | bdevname(rdev->bdev, b)); |
1624 | printk(KERN_NOTICE "raid10:%s: failing drive\n", | 1628 | printk(KERN_NOTICE "md/raid10:%s: %s: failing drive\n", |
1629 | mdname(mddev), | ||
1625 | bdevname(rdev->bdev, b)); | 1630 | bdevname(rdev->bdev, b)); |
1626 | 1631 | ||
1627 | md_error(mddev, rdev); | 1632 | md_error(mddev, rdev); |
1628 | } else { | 1633 | } else { |
1629 | printk(KERN_INFO | 1634 | printk(KERN_INFO |
1630 | "raid10:%s: read error corrected" | 1635 | "md/raid10:%s: read error corrected" |
1631 | " (%d sectors at %llu on %s)\n", | 1636 | " (%d sectors at %llu on %s)\n", |
1632 | mdname(mddev), s, | 1637 | mdname(mddev), s, |
1633 | (unsigned long long)(sect+ | 1638 | (unsigned long long)(sect+ |
@@ -1702,8 +1707,9 @@ static void raid10d(mddev_t *mddev) | |||
1702 | mddev->ro ? IO_BLOCKED : NULL; | 1707 | mddev->ro ? IO_BLOCKED : NULL; |
1703 | mirror = read_balance(conf, r10_bio); | 1708 | mirror = read_balance(conf, r10_bio); |
1704 | if (mirror == -1) { | 1709 | if (mirror == -1) { |
1705 | printk(KERN_ALERT "raid10: %s: unrecoverable I/O" | 1710 | printk(KERN_ALERT "md/raid10:%s: %s: unrecoverable I/O" |
1706 | " read error for block %llu\n", | 1711 | " read error for block %llu\n", |
1712 | mdname(mddev), | ||
1707 | bdevname(bio->bi_bdev,b), | 1713 | bdevname(bio->bi_bdev,b), |
1708 | (unsigned long long)r10_bio->sector); | 1714 | (unsigned long long)r10_bio->sector); |
1709 | raid_end_bio_io(r10_bio); | 1715 | raid_end_bio_io(r10_bio); |
@@ -1713,8 +1719,9 @@ static void raid10d(mddev_t *mddev) | |||
1713 | bio_put(bio); | 1719 | bio_put(bio); |
1714 | rdev = conf->mirrors[mirror].rdev; | 1720 | rdev = conf->mirrors[mirror].rdev; |
1715 | if (printk_ratelimit()) | 1721 | if (printk_ratelimit()) |
1716 | printk(KERN_ERR "raid10: %s: redirecting sector %llu to" | 1722 | printk(KERN_ERR "md/raid10:%s: %s: redirecting sector %llu to" |
1717 | " another mirror\n", | 1723 | " another mirror\n", |
1724 | mdname(mddev), | ||
1718 | bdevname(rdev->bdev,b), | 1725 | bdevname(rdev->bdev,b), |
1719 | (unsigned long long)r10_bio->sector); | 1726 | (unsigned long long)r10_bio->sector); |
1720 | bio = bio_clone(r10_bio->master_bio, GFP_NOIO); | 1727 | bio = bio_clone(r10_bio->master_bio, GFP_NOIO); |
@@ -1972,7 +1979,8 @@ static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, i | |||
1972 | r10_bio = rb2; | 1979 | r10_bio = rb2; |
1973 | if (!test_and_set_bit(MD_RECOVERY_INTR, | 1980 | if (!test_and_set_bit(MD_RECOVERY_INTR, |
1974 | &mddev->recovery)) | 1981 | &mddev->recovery)) |
1975 | printk(KERN_INFO "raid10: %s: insufficient working devices for recovery.\n", | 1982 | printk(KERN_INFO "md/raid10:%s: insufficient " |
1983 | "working devices for recovery.\n", | ||
1976 | mdname(mddev)); | 1984 | mdname(mddev)); |
1977 | break; | 1985 | break; |
1978 | } | 1986 | } |
@@ -2154,8 +2162,9 @@ static conf_t *setup_conf(mddev_t *mddev) | |||
2154 | 2162 | ||
2155 | if (mddev->chunk_sectors < (PAGE_SIZE >> 9) || | 2163 | if (mddev->chunk_sectors < (PAGE_SIZE >> 9) || |
2156 | !is_power_of_2(mddev->chunk_sectors)) { | 2164 | !is_power_of_2(mddev->chunk_sectors)) { |
2157 | printk(KERN_ERR "md/raid10: chunk size must be " | 2165 | printk(KERN_ERR "md/raid10:%s: chunk size must be " |
2158 | "at least PAGE_SIZE(%ld) and be a power of 2.\n", PAGE_SIZE); | 2166 | "at least PAGE_SIZE(%ld) and be a power of 2.\n", |
2167 | mdname(mddev), PAGE_SIZE); | ||
2159 | goto out; | 2168 | goto out; |
2160 | } | 2169 | } |
2161 | 2170 | ||
@@ -2165,7 +2174,7 @@ static conf_t *setup_conf(mddev_t *mddev) | |||
2165 | 2174 | ||
2166 | if ((nc*fc) <2 || (nc*fc) > mddev->raid_disks || | 2175 | if ((nc*fc) <2 || (nc*fc) > mddev->raid_disks || |
2167 | (mddev->layout >> 17)) { | 2176 | (mddev->layout >> 17)) { |
2168 | printk(KERN_ERR "raid10: %s: unsupported raid10 layout: 0x%8x\n", | 2177 | printk(KERN_ERR "md/raid10:%s: unsupported raid10 layout: 0x%8x\n", |
2169 | mdname(mddev), mddev->layout); | 2178 | mdname(mddev), mddev->layout); |
2170 | goto out; | 2179 | goto out; |
2171 | } | 2180 | } |
@@ -2236,7 +2245,7 @@ static conf_t *setup_conf(mddev_t *mddev) | |||
2236 | return conf; | 2245 | return conf; |
2237 | 2246 | ||
2238 | out: | 2247 | out: |
2239 | printk(KERN_ERR "raid10: couldn't allocate memory for %s\n", | 2248 | printk(KERN_ERR "md/raid10:%s: couldn't allocate memory.\n", |
2240 | mdname(mddev)); | 2249 | mdname(mddev)); |
2241 | if (conf) { | 2250 | if (conf) { |
2242 | if (conf->r10bio_pool) | 2251 | if (conf->r10bio_pool) |
@@ -2314,7 +2323,7 @@ static int run(mddev_t *mddev) | |||
2314 | } | 2323 | } |
2315 | /* need to check that every block has at least one working mirror */ | 2324 | /* need to check that every block has at least one working mirror */ |
2316 | if (!enough(conf)) { | 2325 | if (!enough(conf)) { |
2317 | printk(KERN_ERR "raid10: not enough operational mirrors for %s\n", | 2326 | printk(KERN_ERR "md/raid10:%s: not enough operational mirrors.\n", |
2318 | mdname(mddev)); | 2327 | mdname(mddev)); |
2319 | goto out_free_conf; | 2328 | goto out_free_conf; |
2320 | } | 2329 | } |
@@ -2334,11 +2343,11 @@ static int run(mddev_t *mddev) | |||
2334 | } | 2343 | } |
2335 | 2344 | ||
2336 | if (mddev->recovery_cp != MaxSector) | 2345 | if (mddev->recovery_cp != MaxSector) |
2337 | printk(KERN_NOTICE "raid10: %s is not clean" | 2346 | printk(KERN_NOTICE "md/raid10:%s: not clean" |
2338 | " -- starting background reconstruction\n", | 2347 | " -- starting background reconstruction\n", |
2339 | mdname(mddev)); | 2348 | mdname(mddev)); |
2340 | printk(KERN_INFO | 2349 | printk(KERN_INFO |
2341 | "raid10: raid set %s active with %d out of %d devices\n", | 2350 | "md/raid10:%s: active with %d out of %d devices\n", |
2342 | mdname(mddev), conf->raid_disks - mddev->degraded, | 2351 | mdname(mddev), conf->raid_disks - mddev->degraded, |
2343 | conf->raid_disks); | 2352 | conf->raid_disks); |
2344 | /* | 2353 | /* |
@@ -2420,7 +2429,8 @@ static void *raid10_takeover_raid0(mddev_t *mddev) | |||
2420 | conf_t *conf; | 2429 | conf_t *conf; |
2421 | 2430 | ||
2422 | if (mddev->degraded > 0) { | 2431 | if (mddev->degraded > 0) { |
2423 | printk(KERN_ERR "error: degraded raid0!\n"); | 2432 | printk(KERN_ERR "md/raid10:%s: Error: degraded raid0!\n", |
2433 | mdname(mddev)); | ||
2424 | return ERR_PTR(-EINVAL); | 2434 | return ERR_PTR(-EINVAL); |
2425 | } | 2435 | } |
2426 | 2436 | ||
@@ -2458,7 +2468,9 @@ static void *raid10_takeover(mddev_t *mddev) | |||
2458 | /* for raid0 takeover only one zone is supported */ | 2468 | /* for raid0 takeover only one zone is supported */ |
2459 | raid0_priv = mddev->private; | 2469 | raid0_priv = mddev->private; |
2460 | if (raid0_priv->nr_strip_zones > 1) { | 2470 | if (raid0_priv->nr_strip_zones > 1) { |
2461 | printk(KERN_ERR "md: cannot takeover raid 0 with more than one zone.\n"); | 2471 | printk(KERN_ERR "md/raid10:%s: cannot takeover raid 0" |
2472 | " with more than one zone.\n", | ||
2473 | mdname(mddev)); | ||
2462 | return ERR_PTR(-EINVAL); | 2474 | return ERR_PTR(-EINVAL); |
2463 | } | 2475 | } |
2464 | return raid10_takeover_raid0(mddev); | 2476 | return raid10_takeover_raid0(mddev); |