NFSv4: Recovery of recalled read delegations is broken
[deliverable/linux.git] / fs / dax.c
index e43389c74bbcea88956b0c5972f72e94cef58313..93bf2f990ace462b31dba2ee239084e112b1dfd0 100644 (file)
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -17,6 +17,7 @@
 #include <linux/atomic.h>
 #include <linux/blkdev.h>
 #include <linux/buffer_head.h>
+#include <linux/dax.h>
 #include <linux/fs.h>
 #include <linux/genhd.h>
 #include <linux/highmem.h>
@@ -527,7 +528,7 @@ int __dax_pmd_fault(struct vm_area_struct *vma, unsigned long address,
        unsigned long pmd_addr = address & PMD_MASK;
        bool write = flags & FAULT_FLAG_WRITE;
        long length;
-       void *kaddr;
+       void __pmem *kaddr;
        pgoff_t size, pgoff;
        sector_t block, sector;
        unsigned long pfn;
@@ -570,7 +571,8 @@ int __dax_pmd_fault(struct vm_area_struct *vma, unsigned long address,
        if (buffer_unwritten(&bh) || buffer_new(&bh)) {
                int i;
                for (i = 0; i < PTRS_PER_PMD; i++)
-                       clear_page(kaddr + i * PAGE_SIZE);
+                       clear_pmem(kaddr + i * PAGE_SIZE, PAGE_SIZE);
+               wmb_pmem();
                count_vm_event(PGMAJFAULT);
                mem_cgroup_count_vm_event(vma->vm_mm, PGMAJFAULT);
                result |= VM_FAULT_MAJOR;
This page took 0.03028 seconds and 5 git commands to generate.