aboutsummaryrefslogtreecommitdiffstats
path: root/block/bsg.c
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2008-03-04 11:17:11 +0100
committerJens Axboe <axboe@carl.home.kernel.dk>2008-03-04 11:17:11 +0100
commit7a85f8896f4b4a4a0249563b92af9e3161a6b467 (patch)
tree616c62e3c96237e874fc0f47133fbca2160913b5 /block/bsg.c
parent89b6e743788516491846724d7ef89bcac7ac9c99 (diff)
downloadkernel_samsung_smdk4412-7a85f8896f4b4a4a0249563b92af9e3161a6b467.tar.gz
kernel_samsung_smdk4412-7a85f8896f4b4a4a0249563b92af9e3161a6b467.tar.bz2
kernel_samsung_smdk4412-7a85f8896f4b4a4a0249563b92af9e3161a6b467.zip
block: restore the meaning of rq->data_len to the true data length
The meaning of rq->data_len was changed to the length of an allocated buffer from the true data length. It breaks SG_IO friends and bsg. This patch restores the meaning of rq->data_len to the true data length and adds rq->extra_len to store an extended length (due to drain buffer and padding). This patch also removes the code to update bio in blk_rq_map_user introduced by the commit 40b01b9bbdf51ae543a04744283bf2d56c4a6afa. The commit adjusts bio according to memory alignment (queue_dma_alignment). However, memory alignment is NOT padding alignment. This adjustment also breaks SG_IO friends and bsg. Padding alignment needs to be fixed in a proper way (by a separate patch). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <axboe@carl.home.kernel.dk>
Diffstat (limited to 'block/bsg.c')
-rw-r--r--block/bsg.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/block/bsg.c b/block/bsg.c
index 7f3c09549e4..8917c5174dc 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -437,14 +437,14 @@ static int blk_complete_sgv4_hdr_rq(struct request *rq, struct sg_io_v4 *hdr,
}
if (rq->next_rq) {
- hdr->dout_resid = rq->raw_data_len;
- hdr->din_resid = rq->next_rq->raw_data_len;
+ hdr->dout_resid = rq->data_len;
+ hdr->din_resid = rq->next_rq->data_len;
blk_rq_unmap_user(bidi_bio);
blk_put_request(rq->next_rq);
} else if (rq_data_dir(rq) == READ)
- hdr->din_resid = rq->raw_data_len;
+ hdr->din_resid = rq->data_len;
else
- hdr->dout_resid = rq->raw_data_len;
+ hdr->dout_resid = rq->data_len;
/*
* If the request generated a negative error number, return it