On Thu, 31 Jan 2008, Nicholas A. Bellinger wrote: > On Thu, 2008-01-31 at 11:53 -0600, James Bottomley wrote: > > On Thu, 2008-01-31 at 09:28 -0800, Nicholas A. Bellinger wrote: > > > The problem case is a SCSI Target Mode engine that receives a 2048 Byte > > > single sector ATAPI READ_10 request from the storage fabric, and uses > > > scsi_execute_async() (the only option >= 2.6.18) to issue said request > > > to the underlying struct scsi_device. Because the underlying bio code > > > assumes 512 byte only sectors, the check in __bio_add_page() incorrectly > > > determines that max_sectors (max_sectors has to be low, as with 32 from > > > ps3rom.c) has been exceeded, and fails the request back up the stack. > > > > OK, so this is a totally separate issue from the one you actually posted > > it as a patch to fix? > > > > the queue max_sectors parameter is also counted in the block internal of > > 512 byte sectors. If you set it to 32 that means you were only > > expecting 16k of transfers per command maximum. If that's not right, > > then set the limit correctly. > > > > In short, and to repeat: almost every internal size counter to block is > > in units of 512 byte sectors ... that includes capacity, maximum etc ... > > > > Ok, after reading your followup with Geert I see that this looks like a > bug in ps3rom.c assuming 2048 byte sectors to calculate .max_sectors > (which was originally set to 32 as I mentioned). Using the setting > BOUNCE_SIZE << 9 where BOUNCE_SIZE is the request size in bytes looks > like this will solve the issue. My misunderstanding was > that .max_sectors was allowed to be calcuated in non 512 byte sectors, > so please disregard my patch. > > Geert, .max_sectors for ps3rom.c using 512 byte sectors ends up being > 128, yes.? Yes. With kind regards, Geert Uytterhoeven Software Architect Sony Network and Software Technology Center Europe The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium Phone: +32 (0)2 700 8453 Fax: +32 (0)2 700 8622 E-mail: Geert.Uytterhoeven@xxxxxxxxxxx Internet: http://www.sony-europe.com/ Sony Network and Software Technology Center Europe A division of Sony Service Centre (Europe) N.V. Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium VAT BE 0413.825.160 · RPR Brussels Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619