Also I've found that without this patch qla2xxx_eh_device_reset()
refuses to reset the device during normal error recovery carrying out by
SCSI mid-layer as well. I didn't do deeper investigations though, with
this patch the error recovery works as expected.
Vlad
Vladislav Bolkhovitin wrote:
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.
Against 2.6.18-rc2.
Signed-off-by: Vladislav Bolkhovitin <vst@xxxxxxxx>
Vlad
P.S. Sorry for the attachment format, I hope there will be no problems
with it for such a small patch.
------------------------------------------------------------------------
--- linux-2.6.18-rc2/drivers/scsi/qla2xxx/qla_os.c 2006-07-21 18:05:55.000000000 +0400
+++ linux-2.6.18-rc2/drivers/scsi/qla2xxx/qla_os.c 2006-07-21 18:07:26.000000000 +0400
@@ -744,7 +744,6 @@ qla2xxx_eh_device_reset(struct scsi_cmnd
{
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 @@
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,
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html