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

YONETANI Tomokazu qhwt+dfly at les.ath.cx
Mon Jul 9 21:01:37 PDT 2007


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

Thanks.





More information about the Bugs mailing list