Skip to content

Commit

Permalink
[SCSI] fusion: target reset when drive is being removed
Browse files Browse the repository at this point in the history
The issuing of the target reset
used in device hot removal case so the
firmware queue is flushed out off outstanding
commands.

Signed-off-by: Eric Moore <Eric.Moore@lsil.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
Moore, Eric authored and James Bottomley committed Jan 31, 2006
1 parent c73787e commit 7d3eecf
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion drivers/message/fusion/mptsas.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,7 @@ mptsas_slave_destroy(struct scsi_device *sdev)
struct sas_rphy *rphy;
struct mptsas_portinfo *p;
int i;
VirtDevice *vdev;

/*
* Handle hotplug removal case.
Expand All @@ -347,8 +348,29 @@ mptsas_slave_destroy(struct scsi_device *sdev)
out:
mutex_unlock(&hd->ioc->sas_topology_mutex);
/*
* TODO: Issue target reset to flush firmware outstanding commands.
* Issue target reset to flush firmware outstanding commands.
*/
vdev = sdev->hostdata;
if (vdev->configured_lun){
if (mptscsih_TMHandler(hd,
MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
vdev->bus_id,
vdev->target_id,
0, 0, 5 /* 5 second timeout */)
< 0){

/* The TM request failed!
* Fatal error case.
*/
printk(MYIOC_s_WARN_FMT
"Error processing TaskMgmt id=%d TARGET_RESET\n",
hd->ioc->name,
vdev->target_id);

hd->tmPending = 0;
hd->tmState = TM_STATE_NONE;
}
}
mptscsih_slave_destroy(sdev);
}

Expand Down

0 comments on commit 7d3eecf

Please sign in to comment.