lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPcyv4jYKqEr+y8Uon3ddSvqskAiT_xKMNgnY7=UJkE=3xEM5A@mail.gmail.com>
Date:   Thu, 21 Dec 2017 09:12:52 -0800
From:   Dan Williams <dan.j.williams@...el.com>
To:     Jan Kara <jack@...e.cz>
Cc:     linux-ext4 <linux-ext4@...r.kernel.org>, Ted Tso <tytso@....edu>,
        Ross Zwisler <ross.zwisler@...ux.intel.com>,
        linux-fsdevel <linux-fsdevel@...r.kernel.org>,
        linux-nvdimm@...ts.01.org
Subject: Re: [PATCH 1/2] dax: Pass detailed error code from dax_iomap_fault()

On Thu, Dec 21, 2017 at 8:30 AM, Jan Kara <jack@...e.cz> 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@...e.cz>
> ---
>  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.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ