|
@@ -312,7 +312,17 @@ static int dax_insert_mapping(struct inode *inode, struct buffer_head *bh,
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
-static int do_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf,
|
|
|
+/**
|
|
|
+ * __dax_fault - handle a page fault on a DAX file
|
|
|
+ * @vma: The virtual memory area where the fault occurred
|
|
|
+ * @vmf: The description of the fault
|
|
|
+ * @get_block: The filesystem method used to translate file offsets to blocks
|
|
|
+ *
|
|
|
+ * When a page fault occurs, filesystems may call this helper in their
|
|
|
+ * fault handler for DAX files. __dax_fault() assumes the caller has done all
|
|
|
+ * the necessary locking for the page fault to proceed successfully.
|
|
|
+ */
|
|
|
+int __dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf,
|
|
|
get_block_t get_block, dax_iodone_t complete_unwritten)
|
|
|
{
|
|
|
struct file *file = vma->vm_file;
|
|
@@ -443,6 +453,7 @@ static int do_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf,
|
|
|
}
|
|
|
goto out;
|
|
|
}
|
|
|
+EXPORT_SYMBOL(__dax_fault);
|
|
|
|
|
|
/**
|
|
|
* dax_fault - handle a page fault on a DAX file
|
|
@@ -463,7 +474,7 @@ int dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf,
|
|
|
sb_start_pagefault(sb);
|
|
|
file_update_time(vma->vm_file);
|
|
|
}
|
|
|
- result = do_dax_fault(vma, vmf, get_block, complete_unwritten);
|
|
|
+ result = __dax_fault(vma, vmf, get_block, complete_unwritten);
|
|
|
if (vmf->flags & FAULT_FLAG_WRITE)
|
|
|
sb_end_pagefault(sb);
|
|
|
|