Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=958d4a32077f1d7d863e67f40f81c577c3c0c037
Commit:     958d4a32077f1d7d863e67f40f81c577c3c0c037
Parent:     4023c4747861e8c56f46e5fa50bd4feb63fc91fc
Author:     Eric Moore <[EMAIL PROTECTED]>
AuthorDate: Fri Jun 15 17:24:14 2007 -0600
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Sun Jun 17 16:10:53 2007 -0500

    [SCSI] mpt fusion: cleanup eh handlers
    
    nice cosmetic cleaning of eh thread callback funtions
    
    Signed-off-by: Eric Moore <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/message/fusion/mptscsih.c |  132 +++++++++++++++++++++---------------
 1 files changed, 77 insertions(+), 55 deletions(-)

diff --git a/drivers/message/fusion/mptscsih.c 
b/drivers/message/fusion/mptscsih.c
index d1538eb..f0456d2 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1727,20 +1727,35 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
        u32              ctx2abort;
        int              scpnt_idx;
        int              retval;
-       VirtDevice       *vdev;
+       VirtDevice       *vdevice;
        ulong            sn = SCpnt->serial_number;
+       MPT_ADAPTER     *ioc;
 
        /* If we can't locate our host adapter structure, return FAILED status.
         */
        if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL) {
                SCpnt->result = DID_RESET << 16;
                SCpnt->scsi_done(SCpnt);
-               dfailprintk((KERN_INFO MYNAM ": mptscsih_abort: "
-                          "Can't locate host! (sc=%p)\n",
-                          SCpnt));
+               dfailprintk((KERN_INFO MYNAM ": mptscsih_abort: Can't locate "
+                   "host! (sc=%p)\n", SCpnt));
                return FAILED;
        }
 
+       ioc = hd->ioc;
+       printk(MYIOC_s_INFO_FMT "attempting task abort! (sc=%p)\n",
+              ioc->name, SCpnt);
+       scsi_print_command(SCpnt);
+
+       vdevice = SCpnt->device->hostdata;
+       if (!vdevice || !vdevice->vtarget) {
+               dtmprintk((MYIOC_s_DEBUG_FMT "task abort: device has been "
+                   "deleted (sc=%p)\n", ioc->name, SCpnt));
+               SCpnt->result = DID_NO_CONNECT << 16;
+               SCpnt->scsi_done(SCpnt);
+               retval = 0;
+               goto out;
+       }
+
        /* Find this command
         */
        if ((scpnt_idx = SCPNT_TO_LOOKUP_IDX(SCpnt)) < 0) {
@@ -1749,21 +1764,20 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
                 */
                SCpnt->result = DID_RESET << 16;
                dtmprintk((KERN_INFO MYNAM ": %s: mptscsih_abort: "
-                          "Command not in the active list! (sc=%p)\n",
-                          hd->ioc->name, SCpnt));
-               return SUCCESS;
+                  "Command not in the active list! (sc=%p)\n", ioc->name,
+                  SCpnt));
+               retval = 0;
+               goto out;
        }
 
-       if (hd->resetPending)
-               return FAILED;
+       if (hd->resetPending) {
+               retval = FAILED;
+               goto out;
+       }
 
        if (hd->timeouts < -1)
                hd->timeouts++;
 
-       printk(KERN_WARNING MYNAM ": %s: attempting task abort! (sc=%p)\n",
-              hd->ioc->name, SCpnt);
-       scsi_print_command(SCpnt);
-
        /* Most important!  Set TaskMsgContext to SCpnt's MsgContext!
         * (the IO to be ABORT'd)
         *
@@ -1776,18 +1790,17 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
 
        hd->abortSCpnt = SCpnt;
 
-       vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK,
-               vdev->vtarget->channel, vdev->vtarget->id, vdev->lun,
-               ctx2abort, mptscsih_get_tm_timeout(hd->ioc));
+           vdevice->vtarget->channel, vdevice->vtarget->id, vdevice->lun,
+           ctx2abort, mptscsih_get_tm_timeout(ioc));
 
        if (SCPNT_TO_LOOKUP_IDX(SCpnt) == scpnt_idx &&
            SCpnt->serial_number == sn)
                retval = FAILED;
 
-       printk (KERN_WARNING MYNAM ": %s: task abort: %s (sc=%p)\n",
-               hd->ioc->name,
-               ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
+ out:
+       printk(MYIOC_s_INFO_FMT "task abort: %s (sc=%p)\n",
+           ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
 
        if (retval == 0)
                return SUCCESS;
@@ -1809,32 +1822,40 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
 {
        MPT_SCSI_HOST   *hd;
        int              retval;
-       VirtDevice       *vdev;
+       VirtDevice       *vdevice;
+       MPT_ADAPTER     *ioc;
 
        /* If we can't locate our host adapter structure, return FAILED status.
         */
        if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
-               dtmprintk((KERN_INFO MYNAM ": mptscsih_dev_reset: "
-                          "Can't locate host! (sc=%p)\n",
-                          SCpnt));
+               dtmprintk((KERN_INFO MYNAM ": mptscsih_dev_reset: Can't "
+                   "locate host! (sc=%p)\n", SCpnt));
                return FAILED;
        }
 
-       if (hd->resetPending)
-               return FAILED;
-
-       printk(KERN_WARNING MYNAM ": %s: attempting target reset! (sc=%p)\n",
-              hd->ioc->name, SCpnt);
+       ioc = hd->ioc;
+       printk(MYIOC_s_INFO_FMT "attempting target reset! (sc=%p)\n",
+              ioc->name, SCpnt);
        scsi_print_command(SCpnt);
 
-       vdev = SCpnt->device->hostdata;
+       if (hd->resetPending) {
+               retval = FAILED;
+               goto out;
+       }
+
+       vdevice = SCpnt->device->hostdata;
+       if (!vdevice || !vdevice->vtarget) {
+               retval = 0;
+               goto out;
+       }
+
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
-               vdev->vtarget->channel, vdev->vtarget->id,
-               0, 0, mptscsih_get_tm_timeout(hd->ioc));
+           vdevice->vtarget->channel, vdevice->vtarget->id, 0, 0,
+           mptscsih_get_tm_timeout(ioc));
 
-       printk (KERN_WARNING MYNAM ": %s: target reset: %s (sc=%p)\n",
-               hd->ioc->name,
-               ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
+ out:
+       printk (MYIOC_s_INFO_FMT "target reset: %s (sc=%p)\n",
+           ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
 
        if (retval == 0)
                return SUCCESS;
@@ -1858,18 +1879,19 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
        MPT_SCSI_HOST   *hd;
        int              retval;
        VirtDevice       *vdev;
+       MPT_ADAPTER     *ioc;
 
        /* If we can't locate our host adapter structure, return FAILED status.
         */
        if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
-               dtmprintk((KERN_INFO MYNAM ": mptscsih_bus_reset: "
-                          "Can't locate host! (sc=%p)\n",
-                          SCpnt ) );
+               dtmprintk((KERN_INFO MYNAM ": mptscsih_bus_reset: Can't "
+                   "locate host! (sc=%p)\n", SCpnt ));
                return FAILED;
        }
 
-       printk(KERN_WARNING MYNAM ": %s: attempting bus reset! (sc=%p)\n",
-              hd->ioc->name, SCpnt);
+       ioc = hd->ioc;
+       printk(MYIOC_s_INFO_FMT "attempting bus reset! (sc=%p)\n",
+              ioc->name, SCpnt);
        scsi_print_command(SCpnt);
 
        if (hd->timeouts < -1)
@@ -1877,11 +1899,10 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
 
        vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS,
-               vdev->vtarget->channel, 0, 0, 0, 
mptscsih_get_tm_timeout(hd->ioc));
+           vdev->vtarget->channel, 0, 0, 0, mptscsih_get_tm_timeout(ioc));
 
-       printk (KERN_WARNING MYNAM ": %s: bus reset: %s (sc=%p)\n",
-               hd->ioc->name,
-               ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
+       printk(MYIOC_s_INFO_FMT "bus reset: %s (sc=%p)\n",
+           ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
 
        if (retval == 0)
                return SUCCESS;
@@ -1902,37 +1923,38 @@ int
 mptscsih_host_reset(struct scsi_cmnd *SCpnt)
 {
        MPT_SCSI_HOST *  hd;
-       int              status = SUCCESS;
+       int              retval;
+       MPT_ADAPTER     *ioc;
 
        /*  If we can't locate the host to reset, then we failed. */
        if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
-               dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: "
-                            "Can't locate host! (sc=%p)\n",
-                            SCpnt ) );
+               dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: Can't "
+                   "locate host! (sc=%p)\n", SCpnt));
                return FAILED;
        }
 
-       printk(KERN_WARNING MYNAM ": %s: Attempting host reset! (sc=%p)\n",
-              hd->ioc->name, SCpnt);
+       ioc = hd->ioc;
+       printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n",
+           ioc->name, SCpnt);
 
        /*  If our attempts to reset the host failed, then return a failed
         *  status.  The host will be taken off line by the SCSI mid-layer.
         */
-       if (mpt_HardResetHandler(hd->ioc, CAN_SLEEP) < 0){
-               status = FAILED;
+       if (mpt_HardResetHandler(hd->ioc, CAN_SLEEP) < 0) {
+               retval = FAILED;
        } else {
                /*  Make sure TM pending is cleared and TM state is set to
                 *  NONE.
                 */
+               retval = 0;
                hd->tmPending = 0;
                hd->tmState = TM_STATE_NONE;
        }
 
-       dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: "
-                    "Status = %s\n",
-                    (status == SUCCESS) ? "SUCCESS" : "FAILED" ) );
+       printk(MYIOC_s_INFO_FMT "host reset: %s (sc=%p)\n",
+           ioc->name, ((retval == 0) ? "SUCCESS" : "FAILED" ), SCpnt);
 
-       return status;
+       return retval;
 }
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
-
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