Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: [SCSI] aic94xx: fix section mismatch [SCSI] u14-34f: Fix 32bit only problem [SCSI] dpt_i2o: sysfs code [SCSI] dpt_i2o: 64 bit support [SCSI] dpt_i2o: move from virt_to_bus/bus_to_virt to dma_alloc_coherent [SCSI] dpt_i2o: use standard __init / __exit code [SCSI] megaraid_sas: fix suspend/resume sections [SCSI] aacraid: Add Power Management support [SCSI] aacraid: Fix jbod operations scan issues [SCSI] aacraid: Fix warning about macro side-effects [SCSI] add support for variable length extended commands [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer [SCSI] bsg: add large command support [SCSI] aacraid: Fix down_interruptible() to check the return value correctly [SCSI] megaraid_sas; Update the Version and Changelog [SCSI] ibmvscsi: Handle non SCSI error status [SCSI] bug fix for free list handling [SCSI] ipr: Rename ipr's state scsi host attribute to prevent collisions [SCSI] megaraid_mbox: fix Dell CERC firmware problem
This commit is contained in:
@@ -626,7 +626,7 @@ static void scsi_abort_eh_cmnd(struct scsi_cmnd *scmd)
|
||||
* @scmd: SCSI command structure to hijack
|
||||
* @ses: structure to save restore information
|
||||
* @cmnd: CDB to send. Can be NULL if no new cmnd is needed
|
||||
* @cmnd_size: size in bytes of @cmnd
|
||||
* @cmnd_size: size in bytes of @cmnd (must be <= BLK_MAX_CDB)
|
||||
* @sense_bytes: size of sense data to copy. or 0 (if != 0 @cmnd is ignored)
|
||||
*
|
||||
* This function is used to save a scsi command information before re-execution
|
||||
@@ -648,12 +648,14 @@ void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *ses,
|
||||
* command.
|
||||
*/
|
||||
ses->cmd_len = scmd->cmd_len;
|
||||
memcpy(ses->cmnd, scmd->cmnd, sizeof(scmd->cmnd));
|
||||
ses->cmnd = scmd->cmnd;
|
||||
ses->data_direction = scmd->sc_data_direction;
|
||||
ses->sdb = scmd->sdb;
|
||||
ses->next_rq = scmd->request->next_rq;
|
||||
ses->result = scmd->result;
|
||||
|
||||
scmd->cmnd = ses->eh_cmnd;
|
||||
memset(scmd->cmnd, 0, BLK_MAX_CDB);
|
||||
memset(&scmd->sdb, 0, sizeof(scmd->sdb));
|
||||
scmd->request->next_rq = NULL;
|
||||
|
||||
@@ -665,14 +667,13 @@ void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *ses,
|
||||
scmd->sdb.table.sgl = &ses->sense_sgl;
|
||||
scmd->sc_data_direction = DMA_FROM_DEVICE;
|
||||
scmd->sdb.table.nents = 1;
|
||||
memset(scmd->cmnd, 0, sizeof(scmd->cmnd));
|
||||
scmd->cmnd[0] = REQUEST_SENSE;
|
||||
scmd->cmnd[4] = scmd->sdb.length;
|
||||
scmd->cmd_len = COMMAND_SIZE(scmd->cmnd[0]);
|
||||
} else {
|
||||
scmd->sc_data_direction = DMA_NONE;
|
||||
if (cmnd) {
|
||||
memset(scmd->cmnd, 0, sizeof(scmd->cmnd));
|
||||
BUG_ON(cmnd_size > BLK_MAX_CDB);
|
||||
memcpy(scmd->cmnd, cmnd, cmnd_size);
|
||||
scmd->cmd_len = COMMAND_SIZE(scmd->cmnd[0]);
|
||||
}
|
||||
@@ -705,7 +706,7 @@ void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd, struct scsi_eh_save *ses)
|
||||
* Restore original data
|
||||
*/
|
||||
scmd->cmd_len = ses->cmd_len;
|
||||
memcpy(scmd->cmnd, ses->cmnd, sizeof(scmd->cmnd));
|
||||
scmd->cmnd = ses->cmnd;
|
||||
scmd->sc_data_direction = ses->data_direction;
|
||||
scmd->sdb = ses->sdb;
|
||||
scmd->request->next_rq = ses->next_rq;
|
||||
@@ -1775,8 +1776,8 @@ scsi_reset_provider(struct scsi_device *dev, int flag)
|
||||
scmd->request = &req;
|
||||
memset(&scmd->eh_timeout, 0, sizeof(scmd->eh_timeout));
|
||||
|
||||
memset(&scmd->cmnd, '\0', sizeof(scmd->cmnd));
|
||||
|
||||
scmd->cmnd = req.cmd;
|
||||
|
||||
scmd->scsi_done = scsi_reset_provider_done_command;
|
||||
memset(&scmd->sdb, 0, sizeof(scmd->sdb));
|
||||
|
||||
|
Reference in New Issue
Block a user