Whamcloud - gitweb
LU-9558 llite: handle struct vm_operations changes
[fs/lustre-release.git] / lustre / llite / llite_mmap.c
index 94f2b12..e76f3e4 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2015, Intel Corporation.
+ * Copyright (c) 2011, 2016, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -60,7 +56,7 @@ void policy_from_vma(union ldlm_policy_data *policy, struct vm_area_struct *vma,
                     unsigned long addr, size_t count)
 {
        policy->l_extent.start = ((addr - vma->vm_start) & PAGE_MASK) +
-                                (vma->vm_pgoff << PAGE_CACHE_SHIFT);
+                                (vma->vm_pgoff << PAGE_SHIFT);
        policy->l_extent.end = (policy->l_extent.start + count - 1) |
                               ~PAGE_MASK;
 }
@@ -287,7 +283,7 @@ static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf)
        if (ll_sbi_has_fast_read(ll_i2sbi(file_inode(vma->vm_file)))) {
                /* do fast fault */
                ll_cl_add(vma->vm_file, env, NULL, LCC_MMAP);
-               fault_ret = filemap_fault(vma, vmf);
+               fault_ret = ll_filemap_fault(vma, vmf);
                ll_cl_remove(vma->vm_file, env);
 
                /* - If there is no error, then the page was found in cache and
@@ -329,7 +325,7 @@ static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf)
 
                vmpage = vio->u.fault.ft_vmpage;
                if (result != 0 && vmpage != NULL) {
-                       page_cache_release(vmpage);
+                       put_page(vmpage);
                        vmf->page = NULL;
                }
         }
@@ -346,8 +342,14 @@ out:
        RETURN(fault_ret);
 }
 
+#ifdef HAVE_VM_OPS_USE_VM_FAULT_ONLY
+static int ll_fault(struct vm_fault *vmf)
+{
+       struct vm_area_struct *vma = vmf->vma;
+#else
 static int ll_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {
+#endif
        int count = 0;
        bool printed = false;
        int result;
@@ -370,7 +372,7 @@ restart:
                 lock_page(vmpage);
                 if (unlikely(vmpage->mapping == NULL)) { /* unlucky */
                         unlock_page(vmpage);
-                        page_cache_release(vmpage);
+                       put_page(vmpage);
                         vmf->page = NULL;
 
                         if (!printed && ++count > 16) {
@@ -389,8 +391,14 @@ restart:
         return result;
 }
 
+#ifdef HAVE_VM_OPS_USE_VM_FAULT_ONLY
+static int ll_page_mkwrite(struct vm_fault *vmf)
+{
+       struct vm_area_struct *vma = vmf->vma;
+#else
 static int ll_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
 {
+#endif
        int count = 0;
        bool printed = false;
        bool retry;
@@ -477,7 +485,7 @@ int ll_teardown_mmaps(struct address_space *mapping, __u64 first, __u64 last)
        LASSERTF(last > first, "last %llu first %llu\n", last, first);
         if (mapping_mapped(mapping)) {
                 rc = 0;
-               unmap_mapping_range(mapping, first + PAGE_CACHE_SIZE - 1,
+               unmap_mapping_range(mapping, first + PAGE_SIZE - 1,
                                     last - first + 1, 0);
         }