Please note that the above patch isn't helpful on armel.
We had some very fruitful discussions about armel w/ some XFS guys,
and it turns out that a simple patch like the attached is needed. This
works fine for me on 2.6.25-rc6, but I assume it will be made to
look/behave differently before being pushed upstream into the
kernel/xfs-cvs :-)
Since this fixes a cache issue, plain (old) arm will most likely need
it in addition to the struct packing patch, too.
Index: linux-2.6.25-rc6/fs/xfs/linux-2.6/xfs_buf.c
===================================================================
--- linux-2.6.25-rc6.orig/fs/xfs/linux-2.6/xfs_buf.c 2008-03-26 21:41:29.932766585 +0000
+++ linux-2.6.25-rc6/fs/xfs/linux-2.6/xfs_buf.c 2008-03-26 21:43:13.037769383 +0000
@@ -1157,6 +1157,17 @@ _xfs_buf_ioapply(
(bp->b_flags & XBF_READ_AHEAD) ? READA : READ;
}
+#if 0
+ if ((bp->b_flags & (_XBF_PAGE_CACHE|_XBF_PAGES))
+ && (bp->b_flags & XBF_MAPPED)
+ && (bp->b_page_count > 1)) {
+ flush_cache_vunmap(bp->b_addr - bp->b_offset, // start
+ bp->b_addr - bp->b_offset + (bp->b_page_count * PAGE_SIZE));
+ }
+#else
+ flush_cache_vunmap (0, 1);
+#endif
+
/* Special code path for reading a sub page size buffer in --
* we populate up the whole page, and hence the other metadata
* in the same page. This optimization is only valid when the