|
|
@@ -434,19 +434,21 @@ static void raid1_end_write_request(struct bio *bio)
|
|
|
/* We never try FailFast to WriteMostly devices */
|
|
|
!test_bit(WriteMostly, &rdev->flags)) {
|
|
|
md_error(r1_bio->mddev, rdev);
|
|
|
- if (!test_bit(Faulty, &rdev->flags))
|
|
|
- /* This is the only remaining device,
|
|
|
- * We need to retry the write without
|
|
|
- * FailFast
|
|
|
- */
|
|
|
- set_bit(R1BIO_WriteError, &r1_bio->state);
|
|
|
- else {
|
|
|
- /* Finished with this branch */
|
|
|
- r1_bio->bios[mirror] = NULL;
|
|
|
- to_put = bio;
|
|
|
- }
|
|
|
- } else
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * When the device is faulty, it is not necessary to
|
|
|
+ * handle write error.
|
|
|
+ * For failfast, this is the only remaining device,
|
|
|
+ * We need to retry the write without FailFast.
|
|
|
+ */
|
|
|
+ if (!test_bit(Faulty, &rdev->flags))
|
|
|
set_bit(R1BIO_WriteError, &r1_bio->state);
|
|
|
+ else {
|
|
|
+ /* Finished with this branch */
|
|
|
+ r1_bio->bios[mirror] = NULL;
|
|
|
+ to_put = bio;
|
|
|
+ }
|
|
|
} else {
|
|
|
/*
|
|
|
* Set R1BIO_Uptodate in our master bio, so that we
|