xfs
[Top] [All Lists]

Re: [PATCH] xfs: add ->pfn_mkwrite support for DAX

To: Dave Chinner <david@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
Subject: Re: [PATCH] xfs: add ->pfn_mkwrite support for DAX
From: Boaz Harrosh <boaz@xxxxxxxxxxxxx>
Date: Wed, 02 Sep 2015 12:23:31 +0300
Cc: kirill.shutemov@xxxxxxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1441157100-1658-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1441157100-1658-1-git-send-email-david@xxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
On 09/02/2015 04:25 AM, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> ->pfn_mkwrite support is needed so that when a page with allocated
> backing store first takes a write fault the timestamps on the
> file are updated. THis fixes a generic/080 failure.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

Reviewed-by: Boaz Harrosh <boaz@xxxxxxxxxxxxx>

I made a patch for this yesterday, but yours is better of-course
I feel guilty because I sent the patch for the pfn_mkwrite thing,
at the time xfs-dax was not yet in, but I forgot all about it when
reviewing the xfs-dax. My bad, sorry.

Thanks Dave
Boaz

> ---
>  fs/xfs/xfs_file.c  | 11 +++++++++++
>  fs/xfs/xfs_trace.h |  1 +
>  2 files changed, 12 insertions(+)
> 
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index de2c237..26535ba 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -1546,10 +1546,21 @@ xfs_filemap_fault(
>       return ret;
>  }
>  
> +static int
> +xfs_filemap_pfn_mkwrite(
> +     struct vm_area_struct   *vma,
> +     struct vm_fault         *vmf)
> +{
> +     trace_xfs_filemap_pfn_mkwrite(XFS_I(file_inode(vma->vm_file)));
> +
> +     return dax_pfn_mkwrite(vma, vmf);
> +}
> +
>  static const struct vm_operations_struct xfs_file_vm_ops = {
>       .fault          = xfs_filemap_fault,
>       .map_pages      = filemap_map_pages,
>       .page_mkwrite   = xfs_filemap_page_mkwrite,
> +     .pfn_mkwrite    = xfs_filemap_pfn_mkwrite,
>  };
>  
>  STATIC int
> diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
> index 8b5432e..63d87f2 100644
> --- a/fs/xfs/xfs_trace.h
> +++ b/fs/xfs/xfs_trace.h
> @@ -688,6 +688,7 @@ DEFINE_INODE_EVENT(xfs_inode_free_eofblocks_invalid);
>  
>  DEFINE_INODE_EVENT(xfs_filemap_fault);
>  DEFINE_INODE_EVENT(xfs_filemap_page_mkwrite);
> +DEFINE_INODE_EVENT(xfs_filemap_pfn_mkwrite);
>  
>  DECLARE_EVENT_CLASS(xfs_iref_class,
>       TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip),
> 

<Prev in Thread] Current Thread [Next in Thread>