On Mon, Feb 19, 2007 at 05:15:08AM +0000, Ricardo Correia wrote: > On Sunday 18 February 2007 01:41, Pawel Jakub Dawidek wrote: > > I found few places where such situation occurs. I wonder how this got > > unnoticed with ztest, which fails on me within a few seconds (after I > > started to use Solaris atomic operations) on assertions. Maybe this > > only doesn't work when compiled with gcc? Not sure, but most of the time > > 64bit variables are used properly. > > Hi Pawel, > > I've been using the Solaris assembly code for the atomic operation since the > beginning, but lately zfs-fuse has been failing with assertions in that exact > same piece of code of your patch: > > lib/libzpool/build-kernel/arc.c:736: arc_change_state: Assertion > `new_state->size + to_delta >= new_state->lsize (0x1194000 >= 0x11a8000)` > failed. > > Were you hitting this bug?
I was hitting one of those assertions, not sure which exactly. > Unfortunately your patch didn't fix this :( Your numbers looks sane, so you most probably have race somewhere else. I got impossible values in my assertions. > I'm having trouble figuring out this problem.. My first guess was that there are many assertions following atomic operations, like the one you're having problem with: atomic_add_64(&new_state->arcs_lsize, to_delta); ASSERT3U(new_state->arcs_size + to_delta, >=, new_state->arcs_lsize); I thought that there could a race between modify and check, but those assertions are race-free AFAICT. -- Pawel Jakub Dawidek http://www.wheel.pl pjd at FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available URL: <http://mail.opensolaris.org/pipermail/zfs-code/attachments/20070219/900f6949/attachment.bin>