From b8de16318410f6f8611a879678a531237e4aadc9 Mon Sep 17 00:00:00 2001
From: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
Date: Fri, 18 Jan 2008 12:02:15 -0500
Subject: [PATCH] [SCSI] bidirectional: fix up for the new blk_end_request code

Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
 drivers/scsi/scsi_lib.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 681ed1b830f57..4560713ecb14a 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -812,8 +812,16 @@ EXPORT_SYMBOL(scsi_release_buffers);
  */
 void scsi_end_bidi_request(struct scsi_cmnd *cmd)
 {
-	blk_end_bidi_request(cmd->request, 0, scsi_out(cmd)->resid,
-							scsi_in(cmd)->resid);
+	struct request *req = cmd->request;
+	unsigned int dlen = req->data_len;
+	unsigned int next_dlen = req->next_rq->data_len;
+
+	req->data_len = scsi_out(cmd)->resid;
+	req->next_rq->data_len = scsi_in(cmd)->resid;
+
+	/* The req and req->next_rq have not been completed */
+	BUG_ON(blk_end_bidi_request(req, 0, dlen, next_dlen));
+
 	scsi_release_buffers(cmd);
 
 	/*
-- 
GitLab