diff options
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r-- | drivers/md/raid5.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 9c4f7659f8b1..722064689e82 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -4085,10 +4085,15 @@ static void handle_parity_checks5(struct r5conf *conf, struct stripe_head *sh, | |||
4085 | set_bit(STRIPE_INSYNC, &sh->state); | 4085 | set_bit(STRIPE_INSYNC, &sh->state); |
4086 | else { | 4086 | else { |
4087 | atomic64_add(STRIPE_SECTORS, &conf->mddev->resync_mismatches); | 4087 | atomic64_add(STRIPE_SECTORS, &conf->mddev->resync_mismatches); |
4088 | if (test_bit(MD_RECOVERY_CHECK, &conf->mddev->recovery)) | 4088 | if (test_bit(MD_RECOVERY_CHECK, &conf->mddev->recovery)) { |
4089 | /* don't try to repair!! */ | 4089 | /* don't try to repair!! */ |
4090 | set_bit(STRIPE_INSYNC, &sh->state); | 4090 | set_bit(STRIPE_INSYNC, &sh->state); |
4091 | else { | 4091 | pr_warn_ratelimited("%s: mismatch sector in range " |
4092 | "%llu-%llu\n", mdname(conf->mddev), | ||
4093 | (unsigned long long) sh->sector, | ||
4094 | (unsigned long long) sh->sector + | ||
4095 | STRIPE_SECTORS); | ||
4096 | } else { | ||
4092 | sh->check_state = check_state_compute_run; | 4097 | sh->check_state = check_state_compute_run; |
4093 | set_bit(STRIPE_COMPUTE_RUN, &sh->state); | 4098 | set_bit(STRIPE_COMPUTE_RUN, &sh->state); |
4094 | set_bit(STRIPE_OP_COMPUTE_BLK, &s->ops_request); | 4099 | set_bit(STRIPE_OP_COMPUTE_BLK, &s->ops_request); |
@@ -4237,10 +4242,15 @@ static void handle_parity_checks6(struct r5conf *conf, struct stripe_head *sh, | |||
4237 | } | 4242 | } |
4238 | } else { | 4243 | } else { |
4239 | atomic64_add(STRIPE_SECTORS, &conf->mddev->resync_mismatches); | 4244 | atomic64_add(STRIPE_SECTORS, &conf->mddev->resync_mismatches); |
4240 | if (test_bit(MD_RECOVERY_CHECK, &conf->mddev->recovery)) | 4245 | if (test_bit(MD_RECOVERY_CHECK, &conf->mddev->recovery)) { |
4241 | /* don't try to repair!! */ | 4246 | /* don't try to repair!! */ |
4242 | set_bit(STRIPE_INSYNC, &sh->state); | 4247 | set_bit(STRIPE_INSYNC, &sh->state); |
4243 | else { | 4248 | pr_warn_ratelimited("%s: mismatch sector in range " |
4249 | "%llu-%llu\n", mdname(conf->mddev), | ||
4250 | (unsigned long long) sh->sector, | ||
4251 | (unsigned long long) sh->sector + | ||
4252 | STRIPE_SECTORS); | ||
4253 | } else { | ||
4244 | int *target = &sh->ops.target; | 4254 | int *target = &sh->ops.target; |
4245 | 4255 | ||
4246 | sh->ops.target = -1; | 4256 | sh->ops.target = -1; |