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

Reply via email to