DragonFly bugs List (threaded) for 2007-07
DragonFly BSD
DragonFly bugs List (threaded) for 2007-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: ccd on NATA problem - ata0: FAILURE - oversized DMA transfer attempt 73728 > 65536

From: YONETANI Tomokazu <qhwt+dfly@xxxxxxxxxx>
Date: Tue, 10 Jul 2007 12:58:16 +0900

On Mon, Jul 09, 2007 at 10:48:17AM -0700, Matthew Dillon wrote:
> :IIUC, in old-ATA, ad_strategy took care of transfer sizes larger than
> :the maximum I/O size of the device, but not in NATA (I guess GEOM layer
> :is handling it, right?).  Adjusting si_iosize_max (initially faked to
> :be 131072 when attached) in ccdinit() seems to work around this problem.
> :
> :Cheers.
>     There's even an XXX comment next to that assignment.  At the time
>     that assignment is made the CCD hasn't loaded its components yet
>     so we do not know what the actual limitations are.
>     CCD has an iterator in ccdstart() to deal with components.  I think
>     what we need to do is to add some logic to ccdbuffer() to incorporate
>     the limits of the lower level device. 
>     So, please try this patch.  I've included a kprintf() so we can get
>     positive confirmation that it actually does what it is supposed to.
>     The advantage of this patch is that it does not artificially limit
>     the max iosize for the CCD request itself.  e.g. if a person happens
>     to configure an interleave of 64K across two disks CCD which are
>     each limited to 64K I/O's, CCD will still process a 128K I/O in
>     parallel.
>     Please note this patch is almost completely untested.

It worked fine as I tested lightly(-j2 buildworld).  I'll try to test later
with different max iosize of component devices.

> Index: sys/ccdvar.h


[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]