dax.c (c6f40468657d16e4010ef84bf32a761feb3469ea) | dax.c (952da06375c8f3aa58474fff718d9ae8442531b9) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * fs/dax.c - Direct Access filesystem code 4 * Copyright (c) 2013-2014 Intel Corporation 5 * Author: Matthew Wilcox <matthew.r.wilcox@intel.com> 6 * Author: Ross Zwisler <ross.zwisler@linux.intel.com> 7 */ 8 --- 1166 unchanged lines hidden (view full) --- 1175 1176int dax_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero, 1177 const struct iomap_ops *ops) 1178{ 1179 struct iomap_iter iter = { 1180 .inode = inode, 1181 .pos = pos, 1182 .len = len, | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * fs/dax.c - Direct Access filesystem code 4 * Copyright (c) 2013-2014 Intel Corporation 5 * Author: Matthew Wilcox <matthew.r.wilcox@intel.com> 6 * Author: Ross Zwisler <ross.zwisler@linux.intel.com> 7 */ 8 --- 1166 unchanged lines hidden (view full) --- 1175 1176int dax_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero, 1177 const struct iomap_ops *ops) 1178{ 1179 struct iomap_iter iter = { 1180 .inode = inode, 1181 .pos = pos, 1182 .len = len, |
1183 .flags = IOMAP_ZERO, | 1183 .flags = IOMAP_DAX | IOMAP_ZERO, |
1184 }; 1185 int ret; 1186 1187 while ((ret = iomap_iter(&iter, ops)) > 0) 1188 iter.processed = dax_zero_iter(&iter, did_zero); 1189 return ret; 1190} 1191EXPORT_SYMBOL_GPL(dax_zero_range); --- 111 unchanged lines hidden (view full) --- 1303ssize_t 1304dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, 1305 const struct iomap_ops *ops) 1306{ 1307 struct iomap_iter iomi = { 1308 .inode = iocb->ki_filp->f_mapping->host, 1309 .pos = iocb->ki_pos, 1310 .len = iov_iter_count(iter), | 1184 }; 1185 int ret; 1186 1187 while ((ret = iomap_iter(&iter, ops)) > 0) 1188 iter.processed = dax_zero_iter(&iter, did_zero); 1189 return ret; 1190} 1191EXPORT_SYMBOL_GPL(dax_zero_range); --- 111 unchanged lines hidden (view full) --- 1303ssize_t 1304dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, 1305 const struct iomap_ops *ops) 1306{ 1307 struct iomap_iter iomi = { 1308 .inode = iocb->ki_filp->f_mapping->host, 1309 .pos = iocb->ki_pos, 1310 .len = iov_iter_count(iter), |
1311 .flags = IOMAP_DAX, |
|
1311 }; 1312 loff_t done = 0; 1313 int ret; 1314 1315 if (iov_iter_rw(iter) == WRITE) { 1316 lockdep_assert_held_write(&iomi.inode->i_rwsem); 1317 iomi.flags |= IOMAP_WRITE; 1318 } else { --- 137 unchanged lines hidden (view full) --- 1456 int *iomap_errp, const struct iomap_ops *ops) 1457{ 1458 struct address_space *mapping = vmf->vma->vm_file->f_mapping; 1459 XA_STATE(xas, &mapping->i_pages, vmf->pgoff); 1460 struct iomap_iter iter = { 1461 .inode = mapping->host, 1462 .pos = (loff_t)vmf->pgoff << PAGE_SHIFT, 1463 .len = PAGE_SIZE, | 1312 }; 1313 loff_t done = 0; 1314 int ret; 1315 1316 if (iov_iter_rw(iter) == WRITE) { 1317 lockdep_assert_held_write(&iomi.inode->i_rwsem); 1318 iomi.flags |= IOMAP_WRITE; 1319 } else { --- 137 unchanged lines hidden (view full) --- 1457 int *iomap_errp, const struct iomap_ops *ops) 1458{ 1459 struct address_space *mapping = vmf->vma->vm_file->f_mapping; 1460 XA_STATE(xas, &mapping->i_pages, vmf->pgoff); 1461 struct iomap_iter iter = { 1462 .inode = mapping->host, 1463 .pos = (loff_t)vmf->pgoff << PAGE_SHIFT, 1464 .len = PAGE_SIZE, |
1464 .flags = IOMAP_FAULT, | 1465 .flags = IOMAP_DAX | IOMAP_FAULT, |
1465 }; 1466 vm_fault_t ret = 0; 1467 void *entry; 1468 int error; 1469 1470 trace_dax_pte_fault(iter.inode, vmf, ret); 1471 /* 1472 * Check whether offset isn't beyond end of file now. Caller is supposed --- 92 unchanged lines hidden (view full) --- 1565static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp, 1566 const struct iomap_ops *ops) 1567{ 1568 struct address_space *mapping = vmf->vma->vm_file->f_mapping; 1569 XA_STATE_ORDER(xas, &mapping->i_pages, vmf->pgoff, PMD_ORDER); 1570 struct iomap_iter iter = { 1571 .inode = mapping->host, 1572 .len = PMD_SIZE, | 1466 }; 1467 vm_fault_t ret = 0; 1468 void *entry; 1469 int error; 1470 1471 trace_dax_pte_fault(iter.inode, vmf, ret); 1472 /* 1473 * Check whether offset isn't beyond end of file now. Caller is supposed --- 92 unchanged lines hidden (view full) --- 1566static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp, 1567 const struct iomap_ops *ops) 1568{ 1569 struct address_space *mapping = vmf->vma->vm_file->f_mapping; 1570 XA_STATE_ORDER(xas, &mapping->i_pages, vmf->pgoff, PMD_ORDER); 1571 struct iomap_iter iter = { 1572 .inode = mapping->host, 1573 .len = PMD_SIZE, |
1573 .flags = IOMAP_FAULT, | 1574 .flags = IOMAP_DAX | IOMAP_FAULT, |
1574 }; 1575 vm_fault_t ret = VM_FAULT_FALLBACK; 1576 pgoff_t max_pgoff; 1577 void *entry; 1578 int error; 1579 1580 if (vmf->flags & FAULT_FLAG_WRITE) 1581 iter.flags |= IOMAP_WRITE; --- 166 unchanged lines hidden --- | 1575 }; 1576 vm_fault_t ret = VM_FAULT_FALLBACK; 1577 pgoff_t max_pgoff; 1578 void *entry; 1579 int error; 1580 1581 if (vmf->flags & FAULT_FLAG_WRITE) 1582 iter.flags |= IOMAP_WRITE; --- 166 unchanged lines hidden --- |