[SCSI] qla2xxx: Fix to allow to reset devices using sg interface (sg_reset).
Currently it is impossible to reset provided by Qlogic QLA2xxx driver SCSI devices externally using corresponding sg devices, particularly via sg_reset utility, because qla2xxx driver in qla2xxx_eh_device_reset() function checks if the input scsi_cmnd has its private data (CMD_SP()) attached. Then the found pointer isn't used anywhere inside of qla2xxx_eh_device_reset(). If the RESET request comes from sg device, it doesn't have such private data. The attached patch removes check for non-NULL CMD_SP() from qla2xxx_eh_device_reset(), hence allows to reset QLA2xxx's devices using corresponding sg devices. AV: change applies to bus/host reset handlers as well. Signed-off-by: Vladislav Bolkhovitin <vst@vlnb.net> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
Родитель
45ebeb5605
Коммит
b0328beed0
|
@ -744,7 +744,6 @@ qla2xxx_eh_device_reset(struct scsi_cmnd *cmd)
|
|||
{
|
||||
scsi_qla_host_t *ha = to_qla_host(cmd->device->host);
|
||||
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
||||
srb_t *sp;
|
||||
int ret;
|
||||
unsigned int id, lun;
|
||||
unsigned long serial;
|
||||
|
@ -755,8 +754,7 @@ qla2xxx_eh_device_reset(struct scsi_cmnd *cmd)
|
|||
lun = cmd->device->lun;
|
||||
serial = cmd->serial_number;
|
||||
|
||||
sp = (srb_t *) CMD_SP(cmd);
|
||||
if (!sp || !fcport)
|
||||
if (!fcport)
|
||||
return ret;
|
||||
|
||||
qla_printk(KERN_INFO, ha,
|
||||
|
@ -875,7 +873,6 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
|
|||
{
|
||||
scsi_qla_host_t *ha = to_qla_host(cmd->device->host);
|
||||
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
||||
srb_t *sp;
|
||||
int ret;
|
||||
unsigned int id, lun;
|
||||
unsigned long serial;
|
||||
|
@ -886,8 +883,7 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
|
|||
lun = cmd->device->lun;
|
||||
serial = cmd->serial_number;
|
||||
|
||||
sp = (srb_t *) CMD_SP(cmd);
|
||||
if (!sp || !fcport)
|
||||
if (!fcport)
|
||||
return ret;
|
||||
|
||||
qla_printk(KERN_INFO, ha,
|
||||
|
@ -936,7 +932,6 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
|
|||
{
|
||||
scsi_qla_host_t *ha = to_qla_host(cmd->device->host);
|
||||
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
||||
srb_t *sp;
|
||||
int ret;
|
||||
unsigned int id, lun;
|
||||
unsigned long serial;
|
||||
|
@ -947,8 +942,7 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
|
|||
lun = cmd->device->lun;
|
||||
serial = cmd->serial_number;
|
||||
|
||||
sp = (srb_t *) CMD_SP(cmd);
|
||||
if (!sp || !fcport)
|
||||
if (!fcport)
|
||||
return ret;
|
||||
|
||||
qla_printk(KERN_INFO, ha,
|
||||
|
|
Загрузка…
Ссылка в новой задаче