qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 5/5] xfs: disable map_sync for async flush


From: Dave Chinner
Subject: Re: [Qemu-devel] [PATCH v4 5/5] xfs: disable map_sync for async flush
Date: Thu, 4 Apr 2019 09:09:12 +1100
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Apr 03, 2019 at 04:10:18PM +0530, Pankaj Gupta wrote:
> Virtio pmem provides asynchronous host page cache flush
> mechanism. we don't support 'MAP_SYNC' with virtio pmem 
> and xfs.
> 
> Signed-off-by: Pankaj Gupta <address@hidden>
> ---
>  fs/xfs/xfs_file.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 1f2e2845eb76..dced2eb8c91a 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -1203,6 +1203,14 @@ xfs_file_mmap(
>       if (!IS_DAX(file_inode(filp)) && (vma->vm_flags & VM_SYNC))
>               return -EOPNOTSUPP;
>  
> +     /* We don't support synchronous mappings with DAX files if
> +      * dax_device is not synchronous.
> +      */
> +     if (IS_DAX(file_inode(filp)) && !dax_synchronous(
> +             xfs_find_daxdev_for_inode(file_inode(filp))) &&
> +                                     (vma->vm_flags & VM_SYNC))
> +             return -EOPNOTSUPP;
> +
>       file_accessed(filp);
>       vma->vm_ops = &xfs_file_vm_ops;
>       if (IS_DAX(file_inode(filp)))

All this ad hoc IS_DAX conditional logic is getting pretty nasty.

xfs_file_mmap(
....
{
        struct inode    *inode = file_inode(filp);

        if (vma->vm_flags & VM_SYNC) {
                if (!IS_DAX(inode))
                        return -EOPNOTSUPP;
                if (!dax_synchronous(xfs_find_daxdev_for_inode(inode))
                        return -EOPNOTSUPP;
        }

        file_accessed(filp);
        vma->vm_ops = &xfs_file_vm_ops;
        if (IS_DAX(inode))
                vma->vm_flags |= VM_HUGEPAGE;
        return 0;
}


Even better, factor out all the "MAP_SYNC supported" checks into a
helper so that the filesystem code just doesn't have to care about
the details of checking for DAX+MAP_SYNC support....

Cheers,

Dave.
-- 
Dave Chinner
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]