Commit 7c8d3a42fe1c58a7e8fd3f6a013e7d7b474ff931

Authored by Mikulas Patocka
Committed by Alasdair G Kergon
1 parent 650d2a06b4

dm raid1: set discard_zeroes_data_unsupported

We can't guarantee that REQ_DISCARD on dm-mirror zeroes the data even if
the underlying disks support zero on discard.  So this patch sets
ti->discard_zeroes_data_unsupported.

For example, if the mirror is in the process of resynchronizing, it may
happen that kcopyd reads a piece of data, then discard is sent on the
same area and then kcopyd writes the piece of data to another leg.
Consequently, the data is not zeroed.

The flag was made available by commit 983c7db347db8ce2d8453fd1d89b7a4bb6920d56
(dm crypt: always disable discard_zeroes_data).

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@kernel.org
Signed-off-by: Alasdair G Kergon <agk@redhat.com>

Showing 1 changed file with 1 additions and 0 deletions Side-by-side Diff

drivers/md/dm-raid1.c
... ... @@ -1084,6 +1084,7 @@
1084 1084 ti->split_io = dm_rh_get_region_size(ms->rh);
1085 1085 ti->num_flush_requests = 1;
1086 1086 ti->num_discard_requests = 1;
  1087 + ti->discard_zeroes_data_unsupported = 1;
1087 1088  
1088 1089 ms->kmirrord_wq = alloc_workqueue("kmirrord",
1089 1090 WQ_NON_REENTRANT | WQ_MEM_RECLAIM, 0);