Lines Matching refs:iomap
996 static sector_t dax_iomap_sector(struct iomap *iomap, loff_t pos) in dax_iomap_sector() argument
998 return (iomap->addr + (pos & PAGE_MASK) - iomap->offset) >> 9; in dax_iomap_sector()
1001 static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, in dax_iomap_pfn() argument
1004 const sector_t sector = dax_iomap_sector(iomap, pos); in dax_iomap_pfn()
1009 rc = bdev_dax_pgoff(iomap->bdev, sector, size, &pgoff); in dax_iomap_pfn()
1013 length = dax_direct_access(iomap->dax_dev, pgoff, PHYS_PFN(size), in dax_iomap_pfn()
1057 s64 dax_iomap_zero(loff_t pos, u64 length, struct iomap *iomap) in dax_iomap_zero() argument
1059 sector_t sector = iomap_sector(iomap, pos & PAGE_MASK); in dax_iomap_zero()
1071 rc = bdev_dax_pgoff(iomap->bdev, sector, PAGE_SIZE, &pgoff); in dax_iomap_zero()
1078 rc = dax_zero_page_range(iomap->dax_dev, pgoff, 1); in dax_iomap_zero()
1080 rc = dax_direct_access(iomap->dax_dev, pgoff, 1, &kaddr, NULL); in dax_iomap_zero()
1088 dax_flush(iomap->dax_dev, kaddr + offset, size); in dax_iomap_zero()
1096 struct iomap *iomap, struct iomap *srcmap) in dax_iomap_actor() argument
1098 struct block_device *bdev = iomap->bdev; in dax_iomap_actor()
1099 struct dax_device *dax_dev = iomap->dax_dev; in dax_iomap_actor()
1111 if (iomap->type == IOMAP_HOLE || iomap->type == IOMAP_UNWRITTEN) in dax_iomap_actor()
1115 if (WARN_ON_ONCE(iomap->type != IOMAP_MAPPED)) in dax_iomap_actor()
1123 if (iomap->flags & IOMAP_F_NEW) { in dax_iomap_actor()
1133 const sector_t sector = dax_iomap_sector(iomap, pos); in dax_iomap_actor()
1241 struct vm_area_struct *vma, struct iomap *iomap) in dax_fault_is_synchronous() argument
1244 && (iomap->flags & IOMAP_F_DIRTY); in dax_fault_is_synchronous()
1256 struct iomap iomap = { .type = IOMAP_HOLE }; in dax_iomap_pte_fault() local
1257 struct iomap srcmap = { .type = IOMAP_HOLE }; in dax_iomap_pte_fault()
1302 error = ops->iomap_begin(inode, pos, PAGE_SIZE, flags, &iomap, &srcmap); in dax_iomap_pte_fault()
1309 if (WARN_ON_ONCE(iomap.offset + iomap.length < pos + PAGE_SIZE)) { in dax_iomap_pte_fault()
1315 sector_t sector = dax_iomap_sector(&iomap, pos); in dax_iomap_pte_fault()
1317 switch (iomap.type) { in dax_iomap_pte_fault()
1323 error = copy_cow_page_dax(iomap.bdev, iomap.dax_dev, in dax_iomap_pte_fault()
1342 sync = dax_fault_is_synchronous(flags, vma, &iomap); in dax_iomap_pte_fault()
1344 switch (iomap.type) { in dax_iomap_pte_fault()
1346 if (iomap.flags & IOMAP_F_NEW) { in dax_iomap_pte_fault()
1351 error = dax_iomap_pfn(&iomap, pos, PAGE_SIZE, &pfn); in dax_iomap_pte_fault()
1407 ops->iomap_end(inode, pos, PAGE_SIZE, copied, flags, &iomap); in dax_iomap_pte_fault()
1418 struct iomap *iomap, void **entry) in dax_pmd_load_hole() argument
1481 struct iomap iomap = { .type = IOMAP_HOLE }; in dax_iomap_pmd_fault() local
1482 struct iomap srcmap = { .type = IOMAP_HOLE }; in dax_iomap_pmd_fault()
1557 error = ops->iomap_begin(inode, pos, PMD_SIZE, iomap_flags, &iomap, in dax_iomap_pmd_fault()
1562 if (iomap.offset + iomap.length < pos + PMD_SIZE) in dax_iomap_pmd_fault()
1565 sync = dax_fault_is_synchronous(iomap_flags, vma, &iomap); in dax_iomap_pmd_fault()
1567 switch (iomap.type) { in dax_iomap_pmd_fault()
1569 error = dax_iomap_pfn(&iomap, pos, PMD_SIZE, &pfn); in dax_iomap_pmd_fault()
1597 result = dax_pmd_load_hole(&xas, vmf, &iomap, &entry); in dax_iomap_pmd_fault()
1617 &iomap); in dax_iomap_pmd_fault()