RE: oops with USB Storage on 2.6.14

From: goggin, edward
Date: Tue Nov 08 2005 - 15:03:02 EST


Thanks! Here's a better one.

--- ../base/linux-2.6.14-rc4/drivers/scsi/scsi_lib.c 2005-10-10
20:19:19.000000000 -0500
+++ drivers/scsi/scsi_lib.c 2005-11-07 04:46:23.000000000 -0600
@@ -592,10 +592,17 @@ static void scsi_requeue_command(struct

void scsi_next_command(struct scsi_cmnd *cmd)
{
- struct request_queue *q = cmd->device->request_queue;
+ struct scsi_device *sdev = cmd->device;
+ struct request_queue *q = sdev->request_queue;
+
+ /* need to hold a reference on the device before we let go of the
cmd */
+ get_device(&sdev->sdev_gendev);

scsi_put_command(cmd);
scsi_run_queue(q);
+
+ /* ok to remove device now */
+ put_device(&sdev->sdev_gendev);
}

void scsi_run_host_queues(struct Scsi_Host *shost)





> -----Original Message-----
> From: linux-scsi-owner@xxxxxxxxxxxxxxx
> [mailto:linux-scsi-owner@xxxxxxxxxxxxxxx] On Behalf Of Rolf Eike Beer
> Sent: Tuesday, November 08, 2005 11:38 AM
> To: goggin, edward
> Cc: 'Andrew Morton'; Masanari Iida;
> linux-kernel@xxxxxxxxxxxxxxx;
> linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx
> Subject: Re: oops with USB Storage on 2.6.14
>
> Am Dienstag, 8. November 2005 17:24 schrieb goggin, edward:
> >I've run into a bug like this several times using 2.6.14-rc4 while
> >testing dm-multipath's reaction to uevents generated by forcing
> >fiber channel transport failures -- which leads to the scsi device
> >being detached and the queuedata pointer in the device's queue being
> >reset in scsi_device_dev_release. The fix I've used is below and
> >it seems to work well for me. I was going to place this patch on
> >dm-devel today or tomorrow anyway.
> >
> >drivers/scsi/scsi_lib.c:scsi_next_command()
> >Call scsi_device_get and scsi_device_put around the calls to
> >scsi_put_command
> >and scsi_run_queue so that the scsi host structure will not
> be de-allocated
> >between scsi_put_command and scsi_run_queue.
> >
> >*** ../base/linux-2.6.14-rc4/drivers/scsi/scsi_lib.c Mon Oct
> 10 20:19:19
> >2005
> >--- drivers/scsi/scsi_lib.c Thu Nov 3 13:30:03 2005
> >***************
> >*** 592,601 ****
>
> Your patch is linewrapped. Also please use unified diff
> format, good choice
> for diff options is "-Naurp".
>
> Eike
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/