Whamcloud - gitweb
LU-13799 llite: Adjust dio refcounting
[fs/lustre-release.git] / lustre / llite / vvp_dev.c
index bf7e089..7db2a47 100644 (file)
@@ -27,7 +27,6 @@
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
  *
  * cl_device and cl_device_type implementation for VVP layer.
  *
@@ -269,6 +268,18 @@ struct lu_device_type vvp_device_type = {
 #ifndef HAVE_ACCOUNT_PAGE_DIRTIED_EXPORT
 unsigned int (*vvp_account_page_dirtied)(struct page *page,
                                         struct address_space *mapping);
+
+unsigned int ll_account_page_dirtied(struct page *page,
+                                    struct address_space *mapping)
+{
+       /* must use __set_page_dirty, which means unlocking and
+        * relocking, which hurts performance.
+        */
+       ll_xa_unlock(&mapping->i_pages);
+       __set_page_dirty(page, mapping, 0);
+       ll_xa_lock(&mapping->i_pages);
+       return 0;
+}
 #endif
 
 /**
@@ -292,8 +303,9 @@ int vvp_global_init(void)
         * Kernel v5.2-5678-gac1c3e4 no longer exports account_page_dirtied
         */
        vvp_account_page_dirtied = (void *)
-               kallsyms_lookup_name("account_page_dirtied");
-       BUG_ON(!vvp_account_page_dirtied);
+               cfs_kallsyms_lookup_name("account_page_dirtied");
+       if (!vvp_account_page_dirtied)
+               vvp_account_page_dirtied = ll_account_page_dirtied;
 #endif
 
        return 0;