On Tue, 14 Aug 2007 21:20:54 +0200 Bastian Blank <waldi at berlios.de> wrote: > On Tue, Aug 14, 2007 at 08:36:02PM +0200, Bastian Blank wrote: > > There is only lvm between it. This looks like some sort of read-ahead > > for the data, which should not happen for write requests. I tried to dig > > a little bit in the block code but was not able to found the cause. > > I found something: > > scsi_host_get_command > | int write = (data_dir == DMA_TO_DEVICE); > > According to ibmvstgt, this is a write to the scsi device, aka data > transfer to this system. > > | rq = blk_get_request(shost->uspace_req_q, !write, gfp_mask); > > The second parameter should be READ or WRITE, not true/false and it > seems to have the wrong direction. No. The code is correct. READ is zero so it works though we can do better here. The in-kernel ibmvio driver (ibmvstgt) uses the block layer functions in reverse. You can try your correct direction to see data corruption. |