2.6.x urgent scsi fixes
Subsystems (2)
PATCH 1/1 2.6.x urgent scsi fixes
Please pull from the 'scsi-fixes' branch of rsync://rsync.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git
to receive corrections for mistakes that I made...
(diffstat/changelog/patch attached)
drivers/fc4/fc.c | 6 ++---- drivers/scsi/aic7xxx/aic79xx_osm.c | 8 ++++---- 2 files changed, 6 insertions(+), 8 deletions(-)
Jeff Garzik:
aic7xxx/aic79xx_osm: revert completely bogus ahd_linux_queue() patch fc4/fc: fix warnings and errors related to recent SCSI EH updates
drivers/fc4/fc.c +2 -4
@@ -765,8 +765,6 @@ void fcp_release(fc_channel *fcchain, instatic void fcp_scsi_done (Scsi_Cmnd *SCpnt) { -unsigned long flags; -if (FCP_CMND (SCpnt)->done)FCP_CMND (SCpnt)->done (SCpnt); }
@@ -907,8 +905,6 @@ int fcp_scsi_abort(Scsi_Cmnd *SCpnt)*/ if (++fc->abort_count < (fc->can_queue >>1 )) { -unsigned long flags; - SCpnt->result =DID_ABORT ; fcmd->done (SCpnt);printk ("FC: soft abort\n" );
@@ -931,6 +927,7 @@ void fcp_scsi_reset_done(Scsi_Cmnd *SCpnint fcp_scsi_dev_reset (Scsi_Cmnd *SCpnt) { +unsigned long flags;fcp_cmd *cmd;fcp_cmnd *fcmd;fc_channel *fc =FC_SCMND (SCpnt);
@@ -1028,6 +1025,7 @@ static int __fcp_scsi_host_reset(Scsi_Cmint fcp_scsi_host_reset (Scsi_Cmnd *SCpnt) { +unsigned long flags;int rc;spin_lock_irqsave (SCpnt->device->host->host_lock, flags);
drivers/scsi/aic7xxx/aic79xx_osm.c +4 -4
@@ -941,7 +941,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (**/ cmd->scsi_done = scsi_done; -ahd_lock (ahd, &flags); +ahd_midlayer_entrypoint_lock (ahd, &flags);/* * Close the race of a command that was in the process of
@@ -955,7 +955,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (*ahd_cmd_set_transaction_status (cmd,CAM_REQUEUE_REQ );ahd_linux_queue_cmd_complete (ahd, cmd);ahd_schedule_completeq (ahd); -ahd_unlock (ahd, &flags); +ahd_midlayer_entrypoint_unlock (ahd, &flags);return (0 ); } dev = ahd_linux_get_device(ahd, cmd->device->channel,
@@ -965,7 +965,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (*ahd_cmd_set_transaction_status (cmd,CAM_RESRC_UNAVAIL );ahd_linux_queue_cmd_complete (ahd, cmd);ahd_schedule_completeq (ahd); -ahd_unlock (ahd, &flags); +ahd_midlayer_entrypoint_unlock (ahd, &flags);printf ("%s: aic79xx_linux_queue - Unable to allocate device!\n" ,ahd_name (ahd));return (0 );
@@ -979,7 +979,7 @@ ahd_linux_queue(Scsi_Cmnd * cmd, void (* dev->flags |=AHD_DEV_ON_RUN_LIST ;ahd_linux_run_device_queues (ahd); } -ahd_unlock (ahd, &flags); +ahd_midlayer_entrypoint_unlock (ahd, &flags);return (0 ); }