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);
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);