Whamcloud - gitweb
LU-8508 nodemap: improve object handling in cache saving
[fs/lustre-release.git] / lustre / include / lustre_patchless_compat.h
index 3ef2b0b..7bcdaf4 100644 (file)
 #define LUSTRE_PATCHLESS_COMPAT_H
 
 #include <linux/fs.h>
-
+#include <linux/mm.h>
 #ifndef HAVE_TRUNCATE_COMPLETE_PAGE
 #include <linux/list.h>
-#include <linux/mm.h>
 #include <linux/hash.h>
 
 #ifndef HAVE_DELETE_FROM_PAGE_CACHE /* 2.6.39 */
@@ -69,13 +68,26 @@ static inline void ll_remove_from_page_cache(struct page *page)
 static inline void ll_delete_from_page_cache(struct page *page)
 {
         ll_remove_from_page_cache(page);
-        page_cache_release(page);
+       put_page(page);
 }
 #else /* HAVE_DELETE_FROM_PAGE_CACHE */
 #define ll_delete_from_page_cache(page) delete_from_page_cache(page)
 #endif /* !HAVE_DELETE_FROM_PAGE_CACHE */
 
 static inline void
+ll_cancel_dirty_page(struct address_space *mapping, struct page *page)
+{
+#ifdef HAVE_NEW_CANCEL_DIRTY_PAGE
+       cancel_dirty_page(page);
+#elif defined(HAVE_CANCEL_DIRTY_PAGE)
+       cancel_dirty_page(page, PAGE_SIZE);
+#else
+       if (TestClearPageDirty(page))
+               account_page_cleaned(page, mapping);
+#endif /* HAVE_NEW_CANCEL_DIRTY_PAGE */
+}
+
+static inline void
 truncate_complete_page(struct address_space *mapping, struct page *page)
 {
        if (page->mapping != mapping)
@@ -83,11 +95,12 @@ truncate_complete_page(struct address_space *mapping, struct page *page)
 
        if (PagePrivate(page))
 #ifdef HAVE_INVALIDATE_RANGE
-               page->mapping->a_ops->invalidatepage(page, 0, PAGE_CACHE_SIZE);
+               page->mapping->a_ops->invalidatepage(page, 0, PAGE_SIZE);
 #else
                page->mapping->a_ops->invalidatepage(page, 0);
 #endif
-       cancel_dirty_page(page, PAGE_SIZE);
+
+       ll_cancel_dirty_page(mapping, page);
        ClearPageMappedToDisk(page);
        ll_delete_from_page_cache(page);
 }
@@ -122,4 +135,8 @@ truncate_complete_page(struct address_space *mapping, struct page *page)
 #define ATTR_CTIME_SET (1 << 28)
 #endif
 
+#ifndef HAVE_IN_COMPAT_SYSCALL
+#define in_compat_syscall      is_compat_task
+#endif
+
 #endif /* LUSTRE_PATCHLESS_COMPAT_H */