]> git.sur5r.net Git - openldap/commit
Remove mdb data races. Use (txnid_t)-1 as "no ID".
authorHallvard Furuseth <hallvard@openldap.org>
Mon, 17 Sep 2012 13:42:14 +0000 (15:42 +0200)
committerHallvard Furuseth <hallvard@openldap.org>
Mon, 17 Sep 2012 13:42:14 +0000 (15:42 +0200)
commita35f9b2a5346e84bc920111348a1ea7d1cdfe32a
tree71ecab0501b47f22a14adac49656c2f0e963d669
parent38cc1e96b48ef0d0f00b79543c4c6db879537546
Remove mdb data races. Use (txnid_t)-1 as "no ID".

Avoid race between numreaders++ and reading numreaders at cleanup. Make
the un-mutexed reset of reader table entry, atomic: Reset mr_pid only.

Instead check mr_pid != 0 in mdb_page_alloc()'s scan for readers.
(txnid_t)-1 as "no ID"-mark avoids a check for mr_txnid != 0.
The scan can stop when seeing an old reader.
libraries/libmdb/mdb.c