diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-02-24 23:02:06 +0100 |
---|---|---|
committer | Vishal Verma <vishal.l.verma@intel.com> | 2016-05-17 08:44:13 +0200 |
commit | 8b3db9798c689ba2dc509f6ca1a8c7e1c1a3e62a (patch) | |
tree | 25681acb8dc6cff08eddf61167d1837c305fa570 /fs/dax.c | |
parent | block: Update blkdev_dax_capable() for consistency (diff) | |
download | linux-8b3db9798c689ba2dc509f6ca1a8c7e1c1a3e62a.tar.xz linux-8b3db9798c689ba2dc509f6ca1a8c7e1c1a3e62a.zip |
dax: fallback from pmd to pte on error
In preparation for consulting a badblocks list in pmem_direct_access(),
teach dax_pmd_fault() to fallback rather than fail immediately upon
encountering an error. The thought being that reducing the span of the
dax request may avoid the error region.
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Diffstat (limited to 'fs/dax.c')
-rw-r--r-- | fs/dax.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -855,8 +855,8 @@ int __dax_pmd_fault(struct vm_area_struct *vma, unsigned long address, long length = dax_map_atomic(bdev, &dax); if (length < 0) { - result = VM_FAULT_SIGBUS; - goto out; + dax_pmd_dbg(&bh, address, "dax-error fallback"); + goto fallback; } if (length < PMD_SIZE) { dax_pmd_dbg(&bh, address, "dax-length too small"); |