In the switch over, I forgot to set the command length, so it sends out
a request sense with whatever length the prior command had (and fails
badly if it wasn't 6).

James

diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c
index 562432d..9aabb64 100644
--- a/drivers/scsi/53c700.c
+++ b/drivers/scsi/53c700.c
@@ -622,8 +622,10 @@ #endif
                        dma_unmap_single(hostdata->dev, slot->dma_handle, 
sizeof(SCp->sense_buffer), DMA_FROM_DEVICE);
                        /* restore the old result if the request sense was
                         * successful */
-                       if(result == 0)
+                       if (result == 0)
                                result = cmnd[7];
+                       /* restore the original length */
+                       SCp->cmd_len = cmnd[8];
                } else
                        NCR_700_unmap(hostdata, SCp, slot);
 
@@ -1007,6 +1009,9 @@ #endif
                                 * of the command */
                                cmnd[6] = NCR_700_INTERNAL_SENSE_MAGIC;
                                cmnd[7] = hostdata->status[0];
+                               cmnd[8] = SCp->cmd_len;
+                               SCp->cmd_len = 6; /* command length for 
+                                                  * REQUEST_SENSE */
                                slot->pCmd = dma_map_single(hostdata->dev, 
cmnd, MAX_COMMAND_SIZE, DMA_TO_DEVICE);
                                slot->dma_handle = 
dma_map_single(hostdata->dev, SCp->sense_buffer, sizeof(SCp->sense_buffer), 
DMA_FROM_DEVICE);
                                slot->SG[0].ins = 
bS_to_host(SCRIPT_MOVE_DATA_IN | sizeof(SCp->sense_buffer));


-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to