Re: [PATCH] block: fix residual byte count handling
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: 2008-03-03 08:28:36
Also in:
linux-scsi, lkml
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: 2008-03-03 08:28:36
Also in:
linux-scsi, lkml
On Mon, 03 Mar 2008 13:09:13 +0900 Tejun Heo [off-list ref] wrote:
FUJITA Tomonori wrote:quoted
quoted
- I think bugs caused by using raw_data_len instead of data_len are more subtle than the other way around. Using data_len instead of raw_data_len usually affects the application layer while using raw_data_len instead of data_len affects the DMA engine and transport layer.If we add extra_len, we can get what raw_data_len and data_len provide. I can't see what changing the meaning of rq->data_len (and investigating all the block drivers) gives us.No matter which way you go, you change the meaning of rq->data_len and you MUST inspect rq->data_len usage whichever way you go.
The patch doens't change that rq->data_len means the true data length. But yeah, it breaks rq->data_len == sum(sg). So it might break some drivers.
Apply your patch and try to do sg IO on IDE cdrom w/ various transfer lengths.
I've just tried the patch with both ata and libata and it seems to work. For anyone hitting this problem, please try the following patch: http://lkml.org/lkml/2008/3/2/218 Thanks,