Hallvard Breien Furuseth wrote:
On 27/07/14 03:27, openldap-commit2devel(a)OpenLDAP.org wrote:
> commit 3630066843b7ca6b2cd12911d3e2fe3314cd4549
> Author: Howard Chu <hyc(a)symas.com>
> Date: Sat Jul 26 18:16:02 2014 -0700
>
> Fix MIPS cache coherency on Linux
>
> MIPS chips require manual control of on-chip caches. The cacheflush
> syscall being used here only exists on MIPS Linux, other OSs will
> require revisiting.
I may be guessing wrong what's going on here, but anyway:
CACHEFLUSH looks like it belongs before setting me_txns->mti_txnid
which tells other threads/processes to use the new metapage.
Hm, maybe.
If so, MDB_NOLOCK may be in trouble since it uses pick_meta()
instead of mti_txnid. Should there be a separate CACHEFLUSH after
writing the datapages if MDB_NOLOCK, and the current CACHEFLUSH
should just flush the metapages?
I don't see any reason for that. As always, the only thing that matters is
when the metapages get written.
Does the code contradict this comment above, or is it about
something else?
/* Memory ordering issues are irrelevant ... */
Quite simply, on MIPS, write()s into the buffer cache aren't coherent with the
on-chip data (or instruction, but irrelevant) cache.
--
-- Howard Chu
CTO, Symas Corp.
http://www.symas.com
Director, Highland Sun
http://highlandsun.com/hyc/
Chief Architect, OpenLDAP
http://www.openldap.org/project/