I finally got 2.5.59 to run, tho without modules. I can confirm that the three patches, taken together, produce a working hotplug system.
So far, it's not 100%. But I think these patches should go in, because
there is still some debate going on as to how to make hot-unplug work best.
That's the last problem area.
I'm able to attach devices (which then get SCSI /dev/s), use them, then
hot-unplug the device (only tested for devices in quiet state). Attaching
a device (new or the old one) gets a new set of /dev entries.
In addition, the sysfs entries seem to all be correct. The lsscsi utility
likes it all enough, too.
It's a bit odd to see one device as /dev/sda one moment, then another as
/dev/sda the next (in an unplug-then-replace scenario), but that's for the
high-level drivers (sd, sg, etc.) to sort out.
You can crash this if you try. The methods seem to be:
(1) Lots of plugging, as the unplug cleanup code isn't 100% yet
(2) Unplug a device that's still in use.
Both of these issues will be addressed once the unplugging technique gets
worked out (see the copious e-mails on the topic on l-u-d and linux-scsi).
Matt
On Sat, Jan 25, 2003 at 10:11:41AM -0800, Matthew Dharm wrote:
> On Wed, Jan 22, 2003 at 08:43:06PM -0800, Greg KH wrote:
> > On Sun, Jan 19, 2003 at 05:16:02PM -0800, Matthew Dharm wrote:
> > > This patch goes on top of the last one. It fixes a typo in the test for
> > > scsi_register() failure.
> >
> > With these two patches applied, when plugging in a usb-storage device I
> > get the following oops. So I've backed the changes out :)
>
> Try this patch on top of the other two. It should fix the OOPS on attach.
>
> This fixes a silly error where I fail to initialize a pointer early enough
> for the scanning code. If this isn't a perfect example of why
> scsi_register() and scsi_add_host() aren't two separate functions, I don't
> know what is. :)
>
> Oh, and I added a couple of comments, too.
>
> Testing and comments are welcome, as always.
>
> Matt
>
> # This is a BitKeeper generated patch for the following project:
> # Project Name: greg k-h's linux 2.5 USB kernel tree
> # This patch format is intended for GNU patch command version 2.5 or higher.
> # This patch includes the following deltas:
> # ChangeSet 1.668 -> 1.669
> # drivers/usb/storage/usb.c 1.69 -> 1.70
> #
> # The following is the BitKeeper ChangeSet Log
> # --------------------------------------------
> # 03/01/25 [EMAIL PROTECTED] 1.669
> # Fix an OOPS by moving the setting of the hostdata[] pointer to _before_
> # the device scan starts.
> # --------------------------------------------
> #
> diff -Nru a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
> --- a/drivers/usb/storage/usb.c Sat Jan 25 10:07:43 2003
> +++ b/drivers/usb/storage/usb.c Sat Jan 25 10:07:43 2003
> @@ -926,6 +926,12 @@
> goto BadDevice;
> }
>
> + /* set the hostdata to prepare for scanning */
> + ss->host->hostdata[0] = (unsigned long)ss;
> +
> + /* associate this host with our interface */
> + scsi_set_device(ss->host, &intf->dev);
> +
> /* now add the host */
> result = scsi_add_host(ss->host, NULL);
> if (result) {
> @@ -941,9 +947,6 @@
> down(&ss->dev_semaphore);
> goto BadDevice;
> }
> -
> - ss->host->hostdata[0] = (unsigned long)ss;
> - scsi_set_device(ss->host, &intf->dev);
>
> printk(KERN_DEBUG
> "WARNING: USB Mass Storage data integrity not assured\n");
> --
> Matthew Dharm Home: [EMAIL PROTECTED]
> Maintainer, Linux USB Mass Storage Driver
>
> I need a computer?
> -- Customer
> User Friendly, 2/19/1998
--
Matthew Dharm Home: [EMAIL PROTECTED]
Maintainer, Linux USB Mass Storage Driver
It was a new hope.
-- Dust Puppy
User Friendly, 12/25/1998
msg11088/pgp00000.pgp
Description: PGP signature
