Hi,

Derek Spadaro:
> In any case, the solution now is to use write-through mode.  I wonder
> though if there could be an explicit write-back missing after a copy
> or some such which might be seen only on certain hardware?

To be honest, I don't have a good answer for you. If I forgot memory
barrier or something, I guess more bug reports would be posted. But it
never means that aufs is bug free.

I have searched "mips, cache, flush, write-back, write-through, etc" in
the kernel git log since 2.6.21, and I am afraid this fix in 2.6.25 may
be related to your problem. How do you think?
And give more info about your mips cpu, please.


J. R. Okajima

----------------------------------------------------------------------
commit 2eaa7ec286db54cc1a864565ed9367966743bcbd
Author: Ralf Baechle <[email protected]>
Date:   Mon Feb 11 14:51:40 2008 +0000

    [MIPS] Handle I-cache coherency in flush_cache_range()
    
    So far flush_cache_range() did't consider the I-cache largely because it
    did rarely ever matter to real world code.  This was working primarily
    because normally code and data are don't share the same pages - with the
    exception of MIPS16 code which uses address constants embedded between
    the code.   The following sequence of events may break the code:
    
     o MIPS16 executable being loaded
     o dynamic linker relocates the address constants embedded into the code:
     o   Uses mprotect(2) to make code pages PROT_READ|PROT_WRITE
     o   Performs the actual relocations by writing to the pages which likely
         are COW.  Because no PROT_EXEC is set I-cache coherence will not be
         considered.
     o   Uses mprotect(2) to switch code pages back to PROT_READ|PROT_EXEC.
         This results in a call to flush_cache_range() which also does not
         consider I-caches.
     o => executing the page just having been relocated may now result in the
       I-cache getting refilled with stale data from memory.

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get

Reply via email to