Re: [PATCH v5 13/17] dax: dax_iomap_fault() needs to call iomap_end()

From: Christoph Hellwig
Date: Mon Oct 10 2016 - 11:50:28 EST


On Fri, Oct 07, 2016 at 03:09:00PM -0600, Ross Zwisler wrote:
> Currently iomap_end() doesn't do anything for DAX page faults for both ext2
> and XFS. ext2_iomap_end() just checks for a write underrun, and
> xfs_file_iomap_end() checks to see if it needs to finish a delayed
> allocation. However, in the future iomap_end() calls might be needed to
> make sure we have balanced allocations, locks, etc. So, add calls to
> iomap_end() with appropriate error handling to dax_iomap_fault().

Is there a way to just have a single call to iomap_end at the end of
the function, after which we just return a previosuly setup return
value?

e.g.

out:
if (ops->iomap_end) {
error = ops->iomap_end(inode, pos, PAGE_SIZE,
PAGE_SIZE, flags, &iomap);
}

if (error == -ENOMEM)
return VM_FAULT_OOM | major;
if (error < 0 && error != -EBUSY)
return VM_FAULT_SIGBUS | major;
return ret;