This is against for-2.6.31.
This should fix the following problem:
http://marc.info/?l=linux-scsi&m=124449210813269&w=2
=
From: FUJITA Tomonori <[email protected]>
Subject: [PATCH] block: needs to set the residual length of a bidi request
Tejun's "block: set rq->resid_len to blk_rq_bytes() on issue" patch
seems to be incomplete; It doesn't set rq->resid_len to blk_rq_bytes()
for a bidi request (req->next_rq). As a result, all bidi users are
broken.
Signed-off-by: FUJITA Tomonori <[email protected]>
---
block/blk-core.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 7ae83a1..03c5a64 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1846,6 +1846,9 @@ void blk_start_request(struct request *req)
* resid_len to full count and add the timeout handler.
*/
req->resid_len = blk_rq_bytes(req);
+ if (unlikely(blk_bidi_rq(req)))
+ req->next_rq->resid_len = blk_rq_bytes(req->next_rq);
+
blk_add_timer(req);
}
EXPORT_SYMBOL(blk_start_request);
--
1.6.0.6
FUJITA Tomonori wrote:
> This is against for-2.6.31.
>
> This should fix the following problem:
>
> http://marc.info/?l=linux-scsi&m=124449210813269&w=2
>
> =
> From: FUJITA Tomonori <[email protected]>
> Subject: [PATCH] block: needs to set the residual length of a bidi request
>
> Tejun's "block: set rq->resid_len to blk_rq_bytes() on issue" patch
> seems to be incomplete; It doesn't set rq->resid_len to blk_rq_bytes()
> for a bidi request (req->next_rq). As a result, all bidi users are
> broken.
>
> Signed-off-by: FUJITA Tomonori <[email protected]>
Acked-by: Tejun Heo <[email protected]>
Thanks.
--
tejun
On Tue, Jun 09 2009, FUJITA Tomonori wrote:
> This is against for-2.6.31.
>
> This should fix the following problem:
>
> http://marc.info/?l=linux-scsi&m=124449210813269&w=2
Thanks, applied
--
Jens Axboe