All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@SteelEye.com>
To: Mike Christie <mikenc@us.ibm.com>
Cc: Mateusz.Blaszczyk@nask.pl, Alan Stern <stern@rowland.harvard.edu>,
	SCSI development list <linux-scsi@vger.kernel.org>,
	Matthew Dharm <mdharm-usb@one-eyed-alien.net>,
	USB development list <linux-usb-devel@lists.sourceforge.net>
Subject: Re: [linux-usb-devel] 2.6.9-rc4mm1:badness in drivers/scsi/scsi_lib.c
Date: 26 Oct 2004 21:53:58 -0400	[thread overview]
Message-ID: <1098842044.1762.688.camel@mulgrave> (raw)
In-Reply-To: <417E92AB.5020406@us.ibm.com>

On Tue, 2004-10-26 at 14:08, Mike Christie wrote:
> > The null state and and oops are becuase of this
> > http://marc.theaimsgroup.com/?l=linux-scsi&m=109733573729283&w=2
> 
> Oh yeah. that patch is not correct, but if you correctly modify it to
> use device_for_each_child per Christoph's suggestion, I seem to be
> getting some refcounting errors. For some reason the sdev will be
> released, but the sd.c still thinks it is there.

Actually, he suggested using shost_for_each_device.  The reason being
that you can't have nested device_for_each_child (because it takes the
bus semaphore).

The attached should do this, if someone would care to try it out.

James

===== hosts.c 1.102 vs edited =====
--- 1.102/drivers/scsi/hosts.c	2004-10-11 10:03:45 -05:00
+++ edited/hosts.c	2004-10-26 20:49:51 -05:00
@@ -50,11 +50,6 @@
 	.release	= scsi_host_cls_release,
 };
 
-static int scsi_device_cancel_cb(struct device *dev, void *data)
-{
-	return scsi_device_cancel(to_scsi_device(dev), *(int *)data);
-}
-
 /**
  * scsi_host_cancel - cancel outstanding IO to this host
  * @shost:	pointer to struct Scsi_Host
@@ -62,9 +57,12 @@
  **/
 void scsi_host_cancel(struct Scsi_Host *shost, int recovery)
 {
+	struct scsi_device *sdev;
+
 	set_bit(SHOST_CANCEL, &shost->shost_state);
-	device_for_each_child(&shost->shost_gendev, &recovery,
-			      scsi_device_cancel_cb);
+	shost_for_each_device(sdev, shost) {
+		scsi_device_cancel(sdev, recovery);
+	}
 	wait_event(shost->host_wait, (!test_bit(SHOST_RECOVERY,
 						&shost->shost_state)));
 }


  reply	other threads:[~2004-10-27  1:54 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-18 12:51 2.6.9-rc4mm1:badness in drivers/scsi/scsi_lib.c Mateusz.Blaszczyk
2004-10-18 15:30 ` [linux-usb-devel] " Alan Stern
2004-10-21  9:28   ` Mateusz.Blaszczyk
2004-10-21 14:41     ` Alan Stern
2004-10-26  7:57       ` Mateusz.Blaszczyk
2004-10-26 15:07         ` [linux-usb-devel] " Alan Stern
2004-10-26 18:03         ` Mike Christie
2004-10-26 18:08           ` Mike Christie
2004-10-27  1:53             ` James Bottomley [this message]
2004-10-27  5:02               ` [linux-usb-devel] " Douglas Gilbert
2004-10-27 13:42                 ` James Bottomley
2004-10-27  6:41               ` Mike Christie
2004-10-27  8:29                 ` [linux-usb-devel] " Mike Christie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1098842044.1762.688.camel@mulgrave \
    --to=james.bottomley@steeleye.com \
    --cc=Mateusz.Blaszczyk@nask.pl \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=mdharm-usb@one-eyed-alien.net \
    --cc=mikenc@us.ibm.com \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.