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