Commit 914c2d8e authored by Moore, Eric's avatar Moore, Eric Committed by James Bottomley

[SCSI] fusion - removing target_id/bus_id from the VirtDevice structure

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