Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6b4df7ee1f636f0dbf3896235582559c86cb18aa
Commit:     6b4df7ee1f636f0dbf3896235582559c86cb18aa
Parent:     bb71f99f8daefb4a2c2441298bc127aaff9af947
Author:     Russell King <[EMAIL PROTECTED]>
AuthorDate: Sun Mar 4 20:19:07 2007 +0000
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Sun Mar 4 20:33:20 2007 +0000

    [ARM] ARM FAS216: don't modify scsi_cmnd request_bufflen
    
    SCSI doesn't want drivers to modify request_bufflen, so keep a
    driver-private copy of this in the scsi_pointer structure instead.
    
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 drivers/scsi/arm/fas216.c |    9 +++++----
 drivers/scsi/arm/scsi.h   |    2 ++
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c
index 2969cc0..fb5f202 100644
--- a/drivers/scsi/arm/fas216.c
+++ b/drivers/scsi/arm/fas216.c
@@ -633,7 +633,7 @@ static void fas216_updateptrs(FAS216_Info *info, int 
bytes_transferred)
 
        BUG_ON(bytes_transferred < 0);
 
-       info->SCpnt->request_bufflen -= bytes_transferred;
+       SCp->phase -= bytes_transferred;
 
        while (bytes_transferred != 0) {
                if (SCp->this_residual > bytes_transferred)
@@ -715,7 +715,7 @@ static void fas216_cleanuptransfer(FAS216_Info *info)
                return;
 
        if (dmatype == fasdma_real_all)
-               total = info->SCpnt->request_bufflen;
+               total = info->scsi.SCp.phase;
        else
                total = info->scsi.SCp.this_residual;
 
@@ -753,7 +753,7 @@ static void fas216_transfer(FAS216_Info *info)
        fas216_log(info, LOG_BUFFER,
                   "starttransfer: buffer %p length 0x%06x reqlen 0x%06x",
                   info->scsi.SCp.ptr, info->scsi.SCp.this_residual,
-                  info->SCpnt->request_bufflen);
+                  info->scsi.SCp.phase);
 
        if (!info->scsi.SCp.ptr) {
                fas216_log(info, LOG_ERROR, "null buffer passed to "
@@ -784,7 +784,7 @@ static void fas216_transfer(FAS216_Info *info)
        info->dma.transfer_type = dmatype;
 
        if (dmatype == fasdma_real_all)
-               fas216_set_stc(info, info->SCpnt->request_bufflen);
+               fas216_set_stc(info, info->scsi.SCp.phase);
        else
                fas216_set_stc(info, info->scsi.SCp.this_residual);
 
@@ -2114,6 +2114,7 @@ request_sense:
        SCpnt->SCp.buffers_residual = 0;
        SCpnt->SCp.ptr = (char *)SCpnt->sense_buffer;
        SCpnt->SCp.this_residual = sizeof(SCpnt->sense_buffer);
+       SCpnt->SCp.phase = sizeof(SCpnt->sense_buffer);
        SCpnt->SCp.Message = 0;
        SCpnt->SCp.Status = 0;
        SCpnt->request_bufflen = sizeof(SCpnt->sense_buffer);
diff --git a/drivers/scsi/arm/scsi.h b/drivers/scsi/arm/scsi.h
index 3a39579..21ba571 100644
--- a/drivers/scsi/arm/scsi.h
+++ b/drivers/scsi/arm/scsi.h
@@ -80,6 +80,7 @@ static inline void init_SCp(struct scsi_cmnd *SCpnt)
                         (page_address(SCpnt->SCp.buffer->page) +
                          SCpnt->SCp.buffer->offset);
                SCpnt->SCp.this_residual = SCpnt->SCp.buffer->length;
+               SCpnt->SCp.phase = SCpnt->request_bufflen;
 
 #ifdef BELT_AND_BRACES
                /*
@@ -98,6 +99,7 @@ static inline void init_SCp(struct scsi_cmnd *SCpnt)
        } else {
                SCpnt->SCp.ptr = (unsigned char *)SCpnt->request_buffer;
                SCpnt->SCp.this_residual = SCpnt->request_bufflen;
+               SCpnt->SCp.phase = SCpnt->request_bufflen;
        }
 
        /*
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to