Re: [PATCH 1/2] dax: Pass detailed error code from dax_iomap_fault()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 21, 2017 at 8:30 AM, Jan Kara <jack@xxxxxxx> wrote:
> Ext4 needs to pass through error from its iomap handler to the page
> fault handler so that it can properly detect ENOSPC and force
> transaction commit and retry the fault (and block allocation). Add
> argument to dax_iomap_fault() for passing such error.
>
> Signed-off-by: Jan Kara <jack@xxxxxxx>
> ---
>  fs/dax.c            | 9 ++++++---
>  fs/ext2/file.c      | 2 +-
>  fs/ext4/file.c      | 2 +-
>  fs/xfs/xfs_file.c   | 2 +-
>  include/linux/dax.h | 2 +-
>  5 files changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/fs/dax.c b/fs/dax.c
> index 95981591977a..f3afa1d6156c 100644
> --- a/fs/dax.c
> +++ b/fs/dax.c
> @@ -1096,7 +1096,7 @@ static bool dax_fault_is_synchronous(unsigned long flags,
>  }
>
>  static int dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp,
> -                              const struct iomap_ops *ops)
> +                              int *iomap_errp, const struct iomap_ops *ops)
>  {
>         struct vm_area_struct *vma = vmf->vma;
>         struct address_space *mapping = vma->vm_file->f_mapping;
> @@ -1149,6 +1149,8 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp,
>          * that we never have to deal with more than a single extent here.
>          */
>         error = ops->iomap_begin(inode, pos, PAGE_SIZE, flags, &iomap);
> +       if (iomap_errp)
> +               *iomap_errp = error;

Since we already have 'struct iomap' tracking the state of the iomap
should we track the error status there as well?  I.e. move the on
stack allocation of struct iomap to the per-fs dax fault handlers.



[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux