Hi Ajeet, On Tue, Nov 09, 2010 at 04:43:04PM +0530, Ajeet Yadav wrote: > True, its the same system and you were right it was cache VIPT cache problem > the cache hold the stale value even after xlog_bread() update the buffer. > I do not know whether its correct ways to resolve the problem, but the > problem no longer occur. It seems like you more less re-implemented the vmap coherency hooks inside XFS, hardcoded to the mips implementation. The actual helpers would looks something like: static inline void flush_kernel_vmap_range(void *addr, int size) { dma_cache_inv(addr, size); } static inline void invalidate_kernel_vmap_range(void *addr, int size) { dma_cache_inv(addr, size); } For some reason the kernel also expects flush_dcache_page to be implemented by an architecture if we want to implement these two (it's keyed off ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE). Can someone of the mips folks helps with this? The testcase is easy, mounting an xfs filesystem after an unclean shutdown on a machine with virtually indexed caches.