Ricardo Correia wrote: > 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. >
Don't worry about VOP_RWLOCK/VOP_RWUNLOCK(), ZFS doesn't implement those vops. ZFS/ZPL uses its own locks to guarantee the proper POSIX semantics. -Mark