[SCSI] fusion - removing target_id/bus_id from the VirtDevice structure
authorMoore, Eric <Eric.Moore@lsil.com>
Tue, 14 Mar 2006 16:19:36 +0000 (09:19 -0700)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Tue, 14 Mar 2006 20:33:38 +0000 (14:33 -0600)
It makes no sense in keeping the target_id and bus_id
in the VirtDevice structure, when it can be obtained
from the VirtTarget structure.

In addition, this patch fix's couple compilation bugs
in mptfc.c when MPT_DEBUG_FC is enabled. This
provided by Micheal Reed.

Signed-off-by: Eric Moore <Eric.Moore@lsil.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/message/fusion/mptbase.h
drivers/message/fusion/mptfc.c
drivers/message/fusion/mptsas.c
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptspi.c

index 2b9c8b5522fa7ceddb04656d3723f3c94e74d1f5..9b58234add360d1dcac5a1c6ae4a1a3886819385 100644 (file)
@@ -347,10 +347,7 @@ typedef struct _VirtTarget {
 } VirtTarget;
 
 typedef struct _VirtDevice {
-       VirtTarget              *vtarget;
-       u8                       ioc_id;
-       u8                       bus_id;
-       u8                       target_id;
+       VirtTarget              *vtarget;
        u8                       configured_lun;
        u32                      lun;
 } VirtDevice;
index 5a30621051c3b690c6dc6766b71776ee10f6bb14..b343f2a68b1c755ceff84c70aaa774f8eff3576f 100644 (file)
@@ -348,24 +348,6 @@ mptfc_generate_rport_ids(FCDevicePage0_t *pg0, struct fc_rport_identifiers *rid)
        return 0;
 }
 
-static void
-mptfc_remap_sdev(struct scsi_device *sdev, void *arg)
-{
-       VirtDevice              *vdev;
-       VirtTarget              *vtarget;
-       struct scsi_target      *starget;
-
-       starget = scsi_target(sdev);
-       if (starget->hostdata == arg) {
-               vtarget = arg;
-               vdev = sdev->hostdata;
-               if (vdev) {
-                       vdev->bus_id = vtarget->bus_id;
-                       vdev->target_id = vtarget->target_id;
-               }
-       }
-}
-
 static void
 mptfc_register_dev(MPT_ADAPTER *ioc, int channel, FCDevicePage0_t *pg0)
 {
@@ -423,8 +405,6 @@ mptfc_register_dev(MPT_ADAPTER *ioc, int channel, FCDevicePage0_t *pg0)
                                if (vtarget) {
                                        vtarget->target_id = pg0->CurrentTargetID;
                                        vtarget->bus_id = pg0->CurrentBus;
-                                       starget_for_each_device(ri->starget,
-                                               vtarget,mptfc_remap_sdev);
                                }
                                ri->remap_needed = 0;
                        }
@@ -432,7 +412,7 @@ mptfc_register_dev(MPT_ADAPTER *ioc, int channel, FCDevicePage0_t *pg0)
                                "mptfc_reg_dev.%d: %x, %llx / %llx, tid %d, "
                                "rport tid %d, tmo %d\n",
                                        ioc->name,
-                                       oc->sh->host_no,
+                                       ioc->sh->host_no,
                                        pg0->PortIdentifier,
                                        pg0->WWNN,
                                        pg0->WWPN,
@@ -553,23 +533,26 @@ mptfc_slave_alloc(struct scsi_device *sdev)
        }
 
        vdev->vtarget = vtarget;
-       vdev->ioc_id = hd->ioc->id;
        vdev->lun = sdev->lun;
-       vdev->target_id = vtarget->target_id;
-       vdev->bus_id = vtarget->bus_id;
 
        spin_unlock_irqrestore(&hd->ioc->fc_rport_lock,flags);
 
        vtarget->num_luns++;
 
+#ifdef DMPT_DEBUG_FC
+        {
+       struct mptfc_rport_info *ri;
+       ri = *((struct mptfc_rport_info **)rport->dd_data);
        dfcprintk ((MYIOC_s_INFO_FMT
                "mptfc_slv_alloc.%d: num_luns %d, sdev.id %d, "
                "CurrentTargetID %d, %x %llx %llx\n",
-               ioc->name,
+               hd->ioc->name,
                sdev->host->host_no,
                vtarget->num_luns,
                sdev->id, ri->pg0.CurrentTargetID,
                ri->pg0.PortIdentifier, ri->pg0.WWPN, ri->pg0.WWNN));
+       }
+#endif
 
        return 0;
 }
index ba93ef13a41eccf387e58e3bc6214b171f5b62c3..ba555a60bf7f3498afb337698f1b88304febc8ee 100644 (file)
@@ -350,6 +350,7 @@ mptsas_slave_alloc(struct scsi_device *sdev)
        VirtTarget              *vtarget;
        VirtDevice              *vdev;
        struct scsi_target      *starget;
+       u32                     target_id;
        int i;
 
        vdev = kzalloc(sizeof(VirtDevice), GFP_KERNEL);
@@ -358,10 +359,10 @@ mptsas_slave_alloc(struct scsi_device *sdev)
                                hd->ioc->name, sizeof(VirtDevice));
                return -ENOMEM;
        }
-       vdev->ioc_id = hd->ioc->id;
        sdev->hostdata = vdev;
        starget = scsi_target(sdev);
        vtarget = starget->hostdata;
+       vtarget->ioc_id = hd->ioc->id;
        vdev->vtarget = vtarget;
        if (vtarget->num_luns == 0) {
                vtarget->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
@@ -372,8 +373,8 @@ mptsas_slave_alloc(struct scsi_device *sdev)
          RAID volumes placed beyond the last expected port.
        */
        if (sdev->channel == hd->ioc->num_ports) {
-               vdev->target_id = sdev->id;
-               vdev->bus_id = 0;
+               target_id = sdev->id;
+               vtarget->bus_id = 0;
                vdev->lun = 0;
                goto out;
        }
@@ -384,11 +385,10 @@ mptsas_slave_alloc(struct scsi_device *sdev)
                for (i = 0; i < p->num_phys; i++) {
                        if (p->phy_info[i].attached.sas_address ==
                                        rphy->identify.sas_address) {
-                               vdev->target_id =
-                                       p->phy_info[i].attached.id;
-                               vdev->bus_id = p->phy_info[i].attached.channel;
+                               target_id = p->phy_info[i].attached.id;
+                               vtarget->bus_id = p->phy_info[i].attached.channel;
                                vdev->lun = sdev->lun;
-       mutex_unlock(&hd->ioc->sas_topology_mutex);
+                               mutex_unlock(&hd->ioc->sas_topology_mutex);
                                goto out;
                        }
                }
@@ -399,9 +399,7 @@ mptsas_slave_alloc(struct scsi_device *sdev)
        return -ENXIO;
 
  out:
-       vtarget->ioc_id = vdev->ioc_id;
-       vtarget->target_id = vdev->target_id;
-       vtarget->bus_id = vdev->bus_id;
+       vtarget->target_id = target_id;
        vtarget->num_luns++;
        return 0;
 }
@@ -444,8 +442,8 @@ mptsas_slave_destroy(struct scsi_device *sdev)
        if (vdev->configured_lun){
                if (mptscsih_TMHandler(hd,
                     MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
-                    vdev->bus_id,
-                    vdev->target_id,
+                    vdev->vtarget->bus_id,
+                    vdev->vtarget->target_id,
                     0, 0, 5 /* 5 second timeout */)
                     < 0){
 
@@ -455,7 +453,7 @@ mptsas_slave_destroy(struct scsi_device *sdev)
                        printk(MYIOC_s_WARN_FMT
                       "Error processing TaskMgmt id=%d TARGET_RESET\n",
                                hd->ioc->name,
-                               vdev->target_id);
+                               vdev->vtarget->target_id);
 
                        hd->tmPending = 0;
                        hd->tmState = TM_STATE_NONE;
index 77289fd07fe7802e250024cc6cb2043d7858ec5a..c99a918feb5808ba4d4dcae0a25d2e23581bb93b 100644 (file)
@@ -887,7 +887,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
                        dsprintk(( "search_running: found (sc=%p, mf = %p) target %d, lun %d \n",
                                        hd->ScsiLookup[ii], mf, mf->TargetID, mf->LUN[1]));
 
-                       if ((mf->TargetID != ((u8)vdevice->target_id)) || (mf->LUN[1] != ((u8) vdevice->lun)))
+                       if ((mf->TargetID != ((u8)vdevice->vtarget->target_id)) || (mf->LUN[1] != ((u8) vdevice->lun)))
                                continue;
 
                        /* Cleanup
@@ -1285,8 +1285,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
 
        /* Use the above information to set up the message frame
         */
-       pScsiReq->TargetID = (u8) vdev->target_id;
-       pScsiReq->Bus = vdev->bus_id;
+       pScsiReq->TargetID = (u8) vdev->vtarget->target_id;
+       pScsiReq->Bus = vdev->vtarget->bus_id;
        pScsiReq->ChainOffset = 0;
        if (vdev->vtarget->tflags &  MPT_TARGET_FLAGS_RAID_COMPONENT)
                pScsiReq->Function = MPI_FUNCTION_RAID_SCSI_IO_PASSTHROUGH;
@@ -1701,7 +1701,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
 
        vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK,
-               vdev->bus_id, vdev->target_id, vdev->lun,
+               vdev->vtarget->bus_id, vdev->vtarget->target_id, vdev->lun,
                ctx2abort, mptscsih_get_tm_timeout(ioc));
 
        printk (KERN_WARNING MYNAM ": %s: task abort: %s (sc=%p)\n",
@@ -1752,7 +1752,7 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
 
        vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
-               vdev->bus_id, vdev->target_id,
+               vdev->vtarget->bus_id, vdev->vtarget->target_id,
                0, 0, mptscsih_get_tm_timeout(hd->ioc));
 
        printk (KERN_WARNING MYNAM ": %s: target reset: %s (sc=%p)\n",
@@ -1803,7 +1803,7 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
 
        vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS,
-               vdev->bus_id, 0, 0, 0, mptscsih_get_tm_timeout(hd->ioc));
+               vdev->vtarget->bus_id, 0, 0, 0, mptscsih_get_tm_timeout(hd->ioc));
 
        printk (KERN_WARNING MYNAM ": %s: bus reset: %s (sc=%p)\n",
                hd->ioc->name,
@@ -2162,9 +2162,6 @@ mptscsih_slave_alloc(struct scsi_device *sdev)
                return -ENOMEM;
        }
 
-       vdev->ioc_id = hd->ioc->id;
-       vdev->target_id = sdev->id;
-       vdev->bus_id = sdev->channel;
        vdev->lun = sdev->lun;
        sdev->hostdata = vdev;
 
@@ -3366,8 +3363,8 @@ mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
        iocmd.data_dma = -1;
        iocmd.size = 0;
        iocmd.rsvd = iocmd.rsvd2 = 0;
-       iocmd.bus = vdevice->bus_id;
-       iocmd.id = vdevice->target_id;
+       iocmd.bus = vdevice->vtarget->bus_id;
+       iocmd.id = vdevice->vtarget->target_id;
        iocmd.lun = (u8)vdevice->lun;
 
        if ((vdevice->vtarget->type == TYPE_DISK) &&
index 9af69dd66f8b71b2b3119ca93aa31a138926a490..09c745b19cc8443a3f86f93737d7f29d2bdba098 100644 (file)
@@ -343,9 +343,9 @@ static int mptspi_slave_alloc(struct scsi_device *sdev)
                sdev->no_uld_attach = 1;
                vdev->vtarget->tflags |= MPT_TARGET_FLAGS_RAID_COMPONENT;
                /* The real channel for this device is zero */
-               vdev->bus_id = 0;
+               vdev->vtarget->bus_id = 0;
                /* The actual physdisknum (for RAID passthrough) */
-               vdev->target_id = physdisknum;
+               vdev->vtarget->target_id = physdisknum;
        }
 
        return 0;