loff_t pos = (loff_t)vmf->pgoff << PAGE_SHIFT;
        sector_t sector;
        struct iomap iomap = { 0 };
-       unsigned flags = 0;
+       unsigned flags = IOMAP_FAULT;
        int error, major = 0;
        int locked_status = 0;
        void *entry;
        struct address_space *mapping = vma->vm_file->f_mapping;
        unsigned long pmd_addr = address & PMD_MASK;
        bool write = flags & FAULT_FLAG_WRITE;
-       unsigned int iomap_flags = write ? IOMAP_WRITE : 0;
+       unsigned int iomap_flags = (write ? IOMAP_WRITE : 0) | IOMAP_FAULT;
        struct inode *inode = mapping->host;
        int result = VM_FAULT_FALLBACK;
        struct iomap iomap = { 0 };
 
 
        offset = page_offset(page);
        while (length > 0) {
-               ret = iomap_apply(inode, offset, length, IOMAP_WRITE,
-                               ops, page, iomap_page_mkwrite_actor);
+               ret = iomap_apply(inode, offset, length,
+                               IOMAP_WRITE | IOMAP_FAULT, ops, page,
+                               iomap_page_mkwrite_actor);
                if (unlikely(ret <= 0))
                        goto out_unlock;
                offset += ret;
 
  */
 #define IOMAP_WRITE            (1 << 0)
 #define IOMAP_ZERO             (1 << 1)
+#define IOMAP_FAULT            (1 << 3) /* mapping for page fault */
 
 struct iomap_ops {
        /*