|
|
@@ -3218,10 +3218,6 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
|
|
|
if (j == conf->copies) {
|
|
|
/* Cannot recover, so abort the recovery or
|
|
|
* record a bad block */
|
|
|
- put_buf(r10_bio);
|
|
|
- if (rb2)
|
|
|
- atomic_dec(&rb2->remaining);
|
|
|
- r10_bio = rb2;
|
|
|
if (any_working) {
|
|
|
/* problem is that there are bad blocks
|
|
|
* on other device(s)
|
|
|
@@ -3253,6 +3249,10 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
|
|
|
mirror->recovery_disabled
|
|
|
= mddev->recovery_disabled;
|
|
|
}
|
|
|
+ put_buf(r10_bio);
|
|
|
+ if (rb2)
|
|
|
+ atomic_dec(&rb2->remaining);
|
|
|
+ r10_bio = rb2;
|
|
|
break;
|
|
|
}
|
|
|
}
|