linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Olaf Hering <olh@suse.de>
To: Dan Hollis <goemon@anime.net>, linux-scsi@vger.kernel.org
Cc: bcollins@debian.org, linux1394-devel@lists.sourceforge.net
Subject: Re: 100% repeatable way to send firewire out to lunch permanently on 2.6.8.1
Date: Sun, 24 Oct 2004 16:42:36 +0200	[thread overview]
Message-ID: <20041024144236.GA21793@suse.de> (raw)
In-Reply-To: <Pine.LNX.4.44.0409050434540.8779-100000@sasami.anime.net>

 On Sun, Sep 05, Dan Hollis wrote:

>   Vendor: PIONEER   Model: DVD-RW  DVR-104   Rev: 1.31
>   Type:   CD-ROM                             ANSI SCSI revision: 02

> cat /proc/scsi/scsi, it shows up
> 
> now turn drive off
> 
> ieee1394: Node changed: 0-01:1023 -> 0-00:1023
> ieee1394: Node suspended: ID:BUS[0-00:1023]  GUID[00309995505516f8]
> 
> and now...
> cat /proc/scsi/scsi
> 
> entire firewire system is permanently out to lunch. the cat hangs and 
> can't be kill -9'd, no hotplug ever works again, the only solution is a 
> complete reboot.

This is the backtrace:

knodemgrd_0   D 00000000     0   296      1           307   293 (L-TLB)
Call trace:
 [c000a228] __switch_to+0x48/0x70
 [c017736c] schedule+0x2b8/0x5e0
 [c0177914] wait_for_completion+0x7c/0xec
 [c5d2fb94] scsi_wait_req+0x64/0xac [scsi_mod]
 [c54f7598] sr_do_ioctl+0x70/0x240 [sr_mod]
 [c54f6a00] sr_packet+0x5c/0x9c [sr_mod]
 [c5d11a34] cdrom_get_disc_info+0x60/0xc4 [cdrom]
 [c5d121e4] cdrom_mrw_exit+0x1c/0x104 [cdrom]
 [c5d10b6c] unregister_cdrom+0xd0/0x104 [cdrom]
 [c54f61a8] sr_kref_release+0x54/0x80 [sr_mod]
 [c00ad96c] kref_put+0x60/0x70
 [c54f6924] sr_remove+0x50/0xd0 [sr_mod]
 [c00eb100] device_release_driver+0x1b8/0x1bc
 [c00eb2f0] bus_remove_device+0xc0/0x12c
 [c00e9620] device_del+0xa4/0x114


The trouble starts in register_cdrom(), it sets the ->exit() function if
the CD can do CDC_MRW_W.
On unregister, it tries to send a packet to the device which is already
gone.

How about this patch?


diff -purN linux-2.6.9.orig/drivers/scsi/sr.c linux-2.6.9-olh/drivers/scsi/sr.c
--- linux-2.6.9.orig/drivers/scsi/sr.c	2004-10-22 19:02:43.545400072 +0200
+++ linux-2.6.9-olh/drivers/scsi/sr.c	2004-10-24 16:32:10.765682704 +0200
@@ -916,6 +918,7 @@ static void sr_kref_release(struct kref 
 	struct gendisk *disk = cd->disk;
 
 	spin_lock(&sr_index_lock);
+	cd->use = 0;
 	clear_bit(disk->first_minor, sr_index_bits);
 	spin_unlock(&sr_index_lock);
 
diff -purN linux-2.6.9.orig/drivers/scsi/sr_ioctl.c linux-2.6.9-olh/drivers/scsi/sr_ioctl.c
--- linux-2.6.9.orig/drivers/scsi/sr_ioctl.c	2004-10-22 19:02:43.547399768 +0200
+++ linux-2.6.9-olh/drivers/scsi/sr_ioctl.c	2004-10-24 16:31:05.921540512 +0200
@@ -86,6 +86,11 @@ int sr_do_ioctl(Scsi_CD *cd, struct pack
         struct request *req;
 	int result, err = 0, retries = 0;
 
+	if(!cd->use) {
+		err = -ENODEV;
+		goto out;
+	}
+
 	SDev = cd->device;
 	SRpnt = scsi_allocate_request(SDev, GFP_KERNEL);
         if (!SRpnt) {
-- 
USB is for mice, FireWire is for men!

sUse lINUX ag, nÜRNBERG
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

       reply	other threads:[~2004-10-24 14:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.44.0409050434540.8779-100000@sasami.anime.net>
2004-10-24 14:42 ` Olaf Hering [this message]
2004-10-24 14:53   ` 100% repeatable way to send firewire out to lunch permanently on 2.6.8.1 James Bottomley
2004-10-24 15:00     ` Olaf Hering
2004-10-24 15:22       ` James Bottomley
2004-10-24 17:22         ` Dmitry Torokhov
2004-10-24 18:02         ` Olaf Hering
2004-10-24 19:29         ` Olaf Hering
2005-07-31 14:43           ` Dan Hollis
2005-07-31 17:31             ` Stefan Richter
2005-07-31 17:54               ` Stefan Richter
2005-07-31 17:59                 ` Christoph Hellwig
2005-07-31 18:08                   ` Stefan Richter
2005-07-31 19:16             ` Olaf Hering
2005-07-31 22:57               ` [PATCH] ieee1394/sbp2: fix for hot-unplug Stefan Richter
2005-07-31 23:14               ` 100% repeatable way to send firewire out to lunch permanently on 2.6.8.1 Stefan Richter
2004-10-31 21:05   ` Herbert Schmid
     [not found] <200410241930.47104.chrivers@iversen-net.dk>
2004-10-24 18:12 ` Stefan Richter

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=20041024144236.GA21793@suse.de \
    --to=olh@suse.de \
    --cc=bcollins@debian.org \
    --cc=goemon@anime.net \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux1394-devel@lists.sourceforge.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).