graid5, 3 consumers, unaligned access

Howard Goldstein hg at queue.to
Mon Aug 20 06:20:07 PDT 2007


Arne Wörner wrote:
> --- Howard Goldstein <hg at queue.to> wrote:
>> The twe driver has a design flaw that depends on malloc()ing bounce
>> buffers when it's handed data not aligned on 512 byte boundaries.  When
>> malloc fails, the driver syslogs a unique error that only can come from
>>
> I had a look at that file (twe...c) and found that it is not 512 bytes but 64
> bytes (in 6.2R) and that it is about the virtual memory address and not about
> the on-disk-offset...

Ahh you're believing the code comment :( (Rule #1: Never believe the
code comments).  The code comment is wrong, the place where it claims 64
bytes it actually wants 512 bytes, you have to look at the #define and
not the comment.

The problem for me is much worse since it happens all the time with that
requirement.  Can the device driver ever expect to see 512 byte aligned
buffers from geom?

> 
> So it is not a GEOM problem...
> 
> Maybe u could try to reduce the graid5 write cache by setting .maxwql and
> .maxmem to something smaller.

OK



More information about the freebsd-geom mailing list