On Sat, 29 Apr 2006 21:54:15 +0200, [EMAIL PROTECTED] wrote:

> +++ linux-2.6.16patched/drivers/usb/storage/scsiglue.c        2006-04-29 
> 20:01:36.000000000 +0200
> @@ -122,6 +122,13 @@
>                       sdev->request_queue->max_sectors > 64)
>               blk_queue_max_sectors(sdev->request_queue, 64);
>  
> +     /* There are also other devices which have problems transferring 
> +      * more than 64 KB at a time. You can add an unusual_dev entry 
> +      * for those. */
> +     if ((us->flags & US_FL_MAX_SECTORS_128) &&
> +                     sdev->request_queue->max_sectors > 128)
> +             blk_queue_max_sectors(sdev->request_queue, 128);
> +
>       /* We can't put these settings in slave_alloc() because that gets

This reminds me of this:
 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=186307

Here's the patch so you do not have to click into Bugzilla:

diff -urp -X dontdiff linux-2.4.21-40.6.EL/drivers/usb/storage/unusual_devs.h 
linux-2.4.21-40.6.EL.z1/drivers/usb/storage/unusual_devs.h
--- linux-2.4.21-40.6.EL/drivers/usb/storage/unusual_devs.h     2006-04-13 
21:21:42.000000000 -0700
+++ linux-2.4.21-40.6.EL.z1/drivers/usb/storage/unusual_devs.h  2006-04-18 
02:07:24.000000000 -0700
@@ -114,6 +114,16 @@ UNUSUAL_DEV(  0x04a4, 0x0004, 0x0001, 0x
                "DVD-CAM DZ-MV100A Camcorder",
                US_SC_SCSI, US_PR_CB, NULL, US_FL_SINGLE_LUN),
 
+/* Bug 186307 */
+UNUSUAL_DEV(  0x04b3, 0x4001, 0x0000, 0xffff,
+               "IBM",
+               "RSA-II",
+               US_SC_SCSI, US_PR_BULK, max_sectors_init, 0),
+UNUSUAL_DEV(  0x04b3, 0x4002, 0x0000, 0xffff,
+               "IBM",
+               "RSA-II",
+               US_SC_SCSI, US_PR_BULK, max_sectors_init, 0),
+
 /* Reported by Khalid Aziz <[EMAIL PROTECTED]>
  * This entry is needed because the device reports Sub=ff */
 UNUSUAL_DEV(  0x04b8, 0x0602, 0x0110, 0x0110,
diff -urp -X dontdiff linux-2.4.21-40.6.EL/drivers/usb/storage/usb.c 
linux-2.4.21-40.6.EL.z1/drivers/usb/storage/usb.c
--- linux-2.4.21-40.6.EL/drivers/usb/storage/usb.c      2006-04-10 
17:09:58.000000000 -0700
+++ linux-2.4.21-40.6.EL.z1/drivers/usb/storage/usb.c   2006-04-18 
02:09:49.000000000 -0700
@@ -116,6 +116,8 @@ static void * storage_probe(struct usb_d
 
 static void storage_disconnect(struct usb_device *dev, void *ptr);
 
+static int max_sectors_init (struct us_data *us);
+
 /* The entries in this table, except for final ones here
  * (USB_MASS_STORAGE_CLASS and the empty entry), correspond,
  * line for line with the entries of us_unsuaul_dev_list[].
@@ -1071,6 +1073,12 @@ static void * storage_probe(struct usb_d
        return ss;
 }
 
+static int max_sectors_init(struct us_data *us)
+{
+       us->htmplt.max_sectors = 64;
+       return 0;
+}
+
 /* Handle a disconnect event from the USB core */
 static void storage_disconnect(struct usb_device *dev, void *ptr)
 {

Please note that this is a patch for kernel 2.4. The bug submitter
(that is, IBM) claims that our 2.6 based product (RHEL 4) works.
I have no idea why, and I think it's a case of a miraclous
coincidence.

We keep hitting these, so I'm wondering if it would be wise
to create a unified flag with only 32KB limit. I understand that
this would limit the performance more than the 64KB limit which
Benjamin used. But perhaps it's something acceptable... Something
to think about.

-- Pete


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to