upgrade to linux 2.6.10-1.12_FC2
[linux-2.6.git] / mm / truncate.c
index 63dad42..dc2e9a5 100644 (file)
@@ -79,6 +79,12 @@ invalidate_complete_page(struct address_space *mapping, struct page *page)
                spin_unlock_irq(&mapping->tree_lock);
                return 0;
        }
+
+       BUG_ON(PagePrivate(page));
+       if (page_count(page) != 2) {
+               spin_unlock_irq(&mapping->tree_lock);
+               return 0;
+       }
        __remove_from_page_cache(page);
        spin_unlock_irq(&mapping->tree_lock);
        ClearPageUptodate(page);
@@ -271,7 +277,11 @@ void invalidate_inode_pages2(struct address_space *mapping)
                                        clear_page_dirty(page);
                                        ClearPageUptodate(page);
                                } else {
-                                       invalidate_complete_page(mapping, page);
+                                       if (!invalidate_complete_page(mapping,
+                                                                     page)) {
+                                               clear_page_dirty(page);
+                                               ClearPageUptodate(page);
+                                       }
                                }
                        }
                        unlock_page(page);