|
@@ -604,6 +604,15 @@ static void write_callback(unsigned long error, void *context)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * If the bio is discard, return an error, but do not
|
|
|
|
|
+ * degrade the array.
|
|
|
|
|
+ */
|
|
|
|
|
+ if (bio->bi_rw & REQ_DISCARD) {
|
|
|
|
|
+ bio_endio(bio, -EOPNOTSUPP);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
for (i = 0; i < ms->nr_mirrors; i++)
|
|
for (i = 0; i < ms->nr_mirrors; i++)
|
|
|
if (test_bit(i, &error))
|
|
if (test_bit(i, &error))
|
|
|
fail_mirror(ms->mirror + i, DM_RAID1_WRITE_ERROR);
|
|
fail_mirror(ms->mirror + i, DM_RAID1_WRITE_ERROR);
|