--- /dev/null
+ include/linux/mm.h | 2 ++
+ mm/truncate.c | 4 ++--
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+--- linux-2.5.63/include/linux/mm.h~export-truncate-2.5.63 Mon May 5 18:08:15 2003
++++ linux-2.5.63-root/include/linux/mm.h Mon May 5 18:08:58 2003
+@@ -540,6 +540,8 @@ can_vma_merge(struct vm_area_struct *vma
+ else
+ return 0;
+ }
++/* truncate.c */
++extern void truncate_complete_page(struct address_space *mapping,struct page *);
+
+ /* filemap.c */
+ extern unsigned long page_unuse(struct page *);
+--- linux-2.5.63/mm/truncate.c~export-truncate-2.5.63 Mon May 5 18:09:50 2003
++++ linux-2.5.63-root/mm/truncate.c Mon May 5 18:11:29 2003
+@@ -41,7 +41,7 @@ static inline void truncate_partial_page
+ * its lock, b) when a concurrent invalidate_inode_pages got there first and
+ * c) when tmpfs swizzles a page between a tmpfs inode and swapper_space.
+ */
+-static void
++void
+ truncate_complete_page(struct address_space *mapping, struct page *page)
+ {
+ if (page->mapping != mapping)
+@@ -56,7 +56,7 @@ truncate_complete_page(struct address_sp
+ remove_from_page_cache(page);
+ page_cache_release(page); /* pagecache ref */
+ }
+-
++EXPORT_SYMBOL_GPL(truncate_complete_page);
+ /*
+ * This is for invalidate_inode_pages(). That function can be called at
+ * any time, and is not supposed to throw away dirty pages. But pages can
+
+_