On Jan 23, 2007, at 11:28 AM, Ricardo Correia wrote:

> On Tuesday 23 January 2007 19:01, Ricardo Correia wrote:
>> My current code is tripping the following assertion:
>> lib/libzpool/build-kernel/arc.c:736: arc_change_state: Assertion
>> `new_state->size + to_delta >= new_state->lsize (0x2a60000 >=  
>> 0x2a64000)`
>> failed.
>
> (snip)
>
>> (gdb) print new_state->size
>> $1 = 44695552
>> (gdb) print to_delta
>> $2 = 131072
>> (gdb) print new_state->lsize
>> $3 = 44449792
>
> I've just noticed how the "new_state->size + to_delta" value from  
> the crash
> dump is different from the assertion.
>
> I guess it might be a race condition, since I've just implemented
> multithreaded operation, but I think I'm missing some locks that  
> are done by
> the Solaris VFS.
> _______________________________________________

Right, i would verify your locks are working correctly (especially  
make sure atomic_add_64() is truly atomic).  Note, these locks are in  
the ARC - so they are not in the VFS.

eric

Reply via email to