|
@@ -1084,6 +1084,7 @@ static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
|
|
ti->split_io = dm_rh_get_region_size(ms->rh);
|
|
|
ti->num_flush_requests = 1;
|
|
|
ti->num_discard_requests = 1;
|
|
|
+ ti->discard_zeroes_data_unsupported = 1;
|
|
|
|
|
|
ms->kmirrord_wq = alloc_workqueue("kmirrord",
|
|
|
WQ_NON_REENTRANT | WQ_MEM_RECLAIM, 0);
|
|
@@ -1214,7 +1215,7 @@ static int mirror_end_io(struct dm_target *ti, struct bio *bio,
|
|
|
* We need to dec pending if this was a write.
|
|
|
*/
|
|
|
if (rw == WRITE) {
|
|
|
- if (!(bio->bi_rw & REQ_FLUSH))
|
|
|
+ if (!(bio->bi_rw & (REQ_FLUSH | REQ_DISCARD)))
|
|
|
dm_rh_dec(ms->rh, map_context->ll);
|
|
|
return error;
|
|
|
}
|