Trace page invalidations coming from xfs_page_state_convert().

Signed-off-by: Dave Chinner <dgc@sgi.com>
---
 fs/xfs/linux-2.6/xfs_aops.c |   41 +++++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 10 deletions(-)

Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_aops.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_aops.c	2008-05-06 15:44:39.466685085 +1000
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_aops.c	2008-05-06 15:45:22.645091506 +1000
@@ -731,6 +731,34 @@ xfs_is_delayed_page(
 	return 0;
 }
 
+static void
+__xfs_vm_invalidatepage(
+	struct page		*page,
+	unsigned long		offset,
+	int			print)
+{
+	xfs_page_trace(XFS_INVALIDPAGE_ENTER,
+			page->mapping->host, page, offset);
+	if (print) {
+		int d, um, uw;
+		xfs_count_page_state(page, &d, &um, &uw);
+		if (d) {
+			printk("delayed page %p in invalidate on inode %p\n",
+				page, page->mapping->host);
+			dump_stack();
+		}
+	}
+	block_invalidatepage(page, offset);
+}
+
+STATIC void
+xfs_vm_invalidatepage(
+	struct page		*page,
+	unsigned long		offset)
+{
+	__xfs_vm_invalidatepage(page, offset, 0);
+}
+
 /*
  * Allocate & map buffers for page given the extent map. Write it out.
  * except for the original page of a writepage, this is called on
@@ -1154,8 +1182,10 @@ error:
 	 * us to try again.
 	 */
 	if (err != -EAGAIN) {
+		printk("error %d in xfs_page_state_convert on inode %p, unmapped %d\n",
+			err, inode, unmapped);
 		if (!unmapped)
-			block_invalidatepage(page, 0);
+			__xfs_vm_invalidatepage(page, 0, 1);
 		ClearPageUptodate(page);
 	}
 	return err;
@@ -1552,15 +1582,6 @@ xfs_vm_readpages(
 	return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
 }
 
-STATIC void
-xfs_vm_invalidatepage(
-	struct page		*page,
-	unsigned long		offset)
-{
-	xfs_page_trace(XFS_INVALIDPAGE_ENTER,
-			page->mapping->host, page, offset);
-	block_invalidatepage(page, offset);
-}
 
 const struct address_space_operations xfs_address_space_operations = {
 	.readpage		= xfs_vm_readpage,
