mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
[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: Eric Moore <Eric.Moore@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
c972c70fa0
commit
914c2d8e59
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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) &&
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user