Thread (104 messages) 104 messages, 12 authors, 2008-03-20

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

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,
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help