Greg -- Just a quick heads-up, but I noticed that some changes to scsiglue.c migrated to the Linus trees from the linux-scsi trees. So there might be a merging issue with this patch.
Matt On Wed, Jun 18, 2003 at 11:21:52AM -0700, Greg KH wrote: > ChangeSet 1.1318.4.5, 2003/06/16 14:53:54-07:00, [EMAIL PROTECTED] > > [PATCH] USB storage: more cleanups > > This patch (a) removes dead code, (b) renames some static functions with > names that are more apropriate for static functions, and (c) implements a > slave_configure() function. > > With the patch I just sent to Linus (et al.) to fix the SCSI core to allow > slave_configure() to tweak (meaningfully) the two variables I need to set, > we'll be able to remove US_FL_MODE_XLATE. > > (Well, actually, we also need to fix sr.c to respect the use_10_for_ms > flag, but that should be easy once the rest is done.) > > > drivers/usb/storage/scsiglue.c | 103 +++++++---------------------------------- > 1 files changed, 20 insertions(+), 83 deletions(-) > > > diff -Nru a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c > --- a/drivers/usb/storage/scsiglue.c Wed Jun 18 11:15:17 2003 > +++ b/drivers/usb/storage/scsiglue.c Wed Jun 18 11:15:17 2003 > @@ -57,92 +57,29 @@ > * Host functions > ***********************************************************************/ > > -static const char* usb_storage_info(struct Scsi_Host *host) > +static const char* host_info(struct Scsi_Host *host) > { > return "SCSI emulation for USB Mass Storage devices"; > } > > -#if 0 > -/* detect a virtual adapter (always works) > - * Synchronization: 2.4: with the io_request_lock > - * 2.5: no locks. > - * fortunately we don't care. > - * */ > -static int usb_storage_detect(struct SHT *sht) > +static int slave_configure (struct scsi_device *sdev) > { > - struct us_data *us; > - char local_name[32]; > - > - /* This is not nice at all, but how else are we to get the > - * data here? */ > - us = (struct us_data *)sht->proc_dir; > - > - /* set up the name of our subdirectory under /proc/scsi/ */ > - sprintf(local_name, "usb-storage-%d", us->host_number); > - sht->proc_name = kmalloc (strlen(local_name) + 1, GFP_ATOMIC); > - if (!sht->proc_name) > - return 0; > - strcpy(sht->proc_name, local_name); > - > - /* we start with no /proc directory entry */ > - sht->proc_dir = NULL; > - > - /* register the host */ > - us->host = scsi_register(sht, sizeof(us)); > - if (us->host) { > - struct usb_interface *iface; > - us->host->hostdata[0] = (unsigned long)us; > - us->host_no = us->host->host_no; > - iface = usb_ifnum_to_if(us->pusb_dev, us->ifnum); > - if (iface) > - scsi_set_device(us->host, &iface->dev); > - return 1; > - } > + /* set device to use 10-byte commands where possible */ > + sdev->use_10_for_ms = 1; > + sdev->use_10_for_rw = 1; > > - /* odd... didn't register properly. Abort and free pointers */ > - kfree(sht->proc_name); > - sht->proc_name = NULL; > + /* this is to satisify the compiler, tho I don't think the > + * return code is ever checked anywhere. */ > return 0; > } > > -/* Release all resources used by the virtual host > - * > - * NOTE: There is no contention here, because we're already deregistered > - * the driver and we're doing each virtual host in turn, not in parallel > - * Synchronization: BKL, no spinlock. > - */ > -static int usb_storage_release(struct Scsi_Host *psh) > -{ > - struct us_data *us = (struct us_data *)psh->hostdata[0]; > - > - US_DEBUGP("release() called for host %s\n", us->htmplt.name); > - > - /* Kill the control threads > - * > - * Enqueue the command, wake up the thread, and wait for > - * notification that it has exited. > - */ > - US_DEBUGP("-- sending exit command to thread\n"); > - BUG_ON(atomic_read(&us->sm_state) != US_STATE_IDLE); > - us->srb = NULL; > - up(&(us->sema)); > - wait_for_completion(&(us->notify)); > - > - /* remove the pointer to the data structure we were using */ > - (struct us_data*)psh->hostdata[0] = NULL; > - > - /* we always have a successful release */ > - return 0; > -} > -#endif > - > /* queue a command */ > /* This is always called with scsi_lock(srb->host) held */ > -static int usb_storage_queuecommand( Scsi_Cmnd *srb , void (*done)(Scsi_Cmnd *)) > +static int queuecommand( Scsi_Cmnd *srb , void (*done)(Scsi_Cmnd *)) > { > struct us_data *us = (struct us_data *)srb->device->host->hostdata[0]; > > - US_DEBUGP("queuecommand() called\n"); > + US_DEBUGP("%s called\n", __FUNCTION__); > srb->host_scribble = (unsigned char *)us; > > /* enqueue the command */ > @@ -168,7 +105,7 @@ > > /* Command abort */ > /* This is always called with scsi_lock(srb->host) held */ > -static int usb_storage_command_abort( Scsi_Cmnd *srb ) > +static int command_abort( Scsi_Cmnd *srb ) > { > struct Scsi_Host *host = srb->device->host; > struct us_data *us = (struct us_data *) host->hostdata[0]; > @@ -211,7 +148,7 @@ > /* This invokes the transport reset mechanism to reset the state of the > * device */ > /* This is always called with scsi_lock(srb->host) held */ > -static int usb_storage_device_reset( Scsi_Cmnd *srb ) > +static int device_reset( Scsi_Cmnd *srb ) > { > struct us_data *us = (struct us_data *)srb->device->host->hostdata[0]; > int result; > @@ -242,7 +179,7 @@ > /* It refuses to work if there's more than one interface in > * the device, so that other users are not affected. */ > /* This is always called with scsi_lock(srb->host) held */ > -static int usb_storage_bus_reset( Scsi_Cmnd *srb ) > +static int bus_reset( Scsi_Cmnd *srb ) > { > struct us_data *us = (struct us_data *)srb->device->host->hostdata[0]; > int result; > @@ -290,7 +227,7 @@ > #define SPRINTF(args...) \ > do { if (pos < buffer+length) pos += sprintf(pos, ## args); } while (0) > > -static int usb_storage_proc_info (struct Scsi_Host *hostptr, char *buffer, char > **start, off_t offset, > +static int proc_info (struct Scsi_Host *hostptr, char *buffer, char **start, off_t > offset, > int length, int inout) > { > struct us_data *us; > @@ -352,9 +289,9 @@ > /* basic userland interface stuff */ > .name = "usb-storage", > .proc_name = "usb-storage", > - .proc_info = usb_storage_proc_info, > + .proc_info = proc_info, > .proc_dir = NULL, > - .info = usb_storage_info, > + .info = host_info, > .ioctl = NULL, > > /* old-style detect and release */ > @@ -363,12 +300,12 @@ > > /* command interface -- queued only */ > .command = NULL, > - .queuecommand = usb_storage_queuecommand, > + .queuecommand = queuecommand, > > /* error and abort handlers */ > - .eh_abort_handler = usb_storage_command_abort, > - .eh_device_reset_handler = usb_storage_device_reset, > - .eh_bus_reset_handler = usb_storage_bus_reset, > + .eh_abort_handler = command_abort, > + .eh_device_reset_handler = device_reset, > + .eh_bus_reset_handler = bus_reset, > .eh_host_reset_handler = NULL, > .eh_strategy_handler = NULL, > > @@ -384,7 +321,7 @@ > > /* pre- and post- device scan functions */ > .slave_alloc = NULL, > - .slave_configure = NULL, > + .slave_configure = slave_configure, > .slave_destroy = NULL, > > /* lots of sg segments can be handled */ > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: INetU > Attention Web Developers & Consultants: Become An INetU Hosting Partner. > Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission! > INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php > _______________________________________________ > [EMAIL PROTECTED] > To unsubscribe, use the last form field at: > https://lists.sourceforge.net/lists/listinfo/linux-usb-devel -- Matthew Dharm Home: [EMAIL PROTECTED] Maintainer, Linux USB Mass Storage Driver NYET! The evil stops here! -- Pitr User Friendly, 6/22/1998
pgp00000.pgp
Description: PGP signature