Messages in this thread | | | Subject | Re: [patch 1/2]block: handle merged discard request | From | "Martin K. Petersen" <> | Date | Wed, 21 Mar 2012 22:32:54 -0400 |
| |
>>>>> "Shaohua" == Shaohua Li <shli@kernel.org> writes:
Shaohua> The SCSI discard implementation hacks the first bio of request Shaohua> to add payload, which makes blk_update_request() can't Shaohua> correctly mark bios finish. The patch solves it. We set Shaohua> discard bio size to 0 and finish it after the hacked payload Shaohua> finishes.
Ick!
Also, you can't muck with bi_size because if we get an I/O error and have to reissue the command we no longer know how much to write.
I have had to deal with the same issue for WRITE SAME. And the only sane approach is to distinguish between the DMA transfer size and the blocks "affected" by the command. That's what I'm working on right now for copy offload...
If this is something you want in 3.4 I guess we could temporarily add a separate length field to struct request. If you can wait I suggest we talk at LSF.
-- Martin K. Petersen Oracle Linux Engineering
| |