On Wednesday 24 January 2007 00:04, eric kustarz wrote: > 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.
Yes, atomic_add_64() should be truly atomic, since I've taken that (assembly) code from OpenSolaris :) Although I have to ask. The atomic_add_64() itself is atomic, but couldn't the ab->b_state->lsize value change between the atomic_add_64() and the ASSERT3U()? Unless the mutex is protecting this value. But then why would atomic_add_64() be needed? Now I'm confused. As you can probably see already, I have no clue about that piece of code.. :) The locks I was referring to were the VOP_RWLOCK() locks in the VFS read() and write() syscalls, possibly some others as well that I still haven't implemented. I have to do a code review to see what's missing. Thanks.