On Wed, 26 Oct 2016, Bart Van Assche wrote: > On 10/26/2016 01:26 PM, Mikulas Patocka wrote: > > The brd driver refuses misaligned discard requests with an error. However, > > this is suboptimal, misaligned requests could be handled by discarding a > > part of the request that is aligned on a page boundary. This patch changes > > the code so that it handles misaligned requests. > > Hello Mikulas, > > We do not want this kind of discard request processing in every block driver. > This is why I think that this kind of processing should be added to the block > layer. See also "[PATCH v3 0/5] Make blkdev_issue_discard() submit aligned > discard requests" (http://www.spinics.net/lists/linux-block/msg02360.html). > > Bart. I don't like the idea of complicating the code by turning discards into writes. You can just turn off the flag "discard_zeroes_data" and drop all the splitting code. The flag "discard_zeroes_data" is actually misdesigned, because the storage stack can change dynamically while bios are in progress. You can send a discard bio to a device mapper device that has "discard_zeroes_data" - and while the bio is in progress, the device mapper stack can be reconfigured to redirect the bio to another device that doesn't have "discard_zeroes_data" - and the bio won't zero data and the caller that issued it has no way to find it out. I think the proper thing would be to move "discard_zeroes_data" flag into the bio itself - there would be REQ_OP_DISCARD and REQ_OP_DISCARD_ZERO - and if the device doesn't support REQ_OP_DISCARD_ZERO, it rejects the bio and the caller is supposed to do zeroing manually. Mikulas -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel