Message ID | 20190423080612.15361-5-pagupta@redhat.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | virtio pmem driver | expand |
On Tue 23-04-19 13:36:10, Pankaj Gupta wrote: > This patch introduces 'daxdev_mapping_supported' helper > which checks if 'MAP_SYNC' is supported with filesystem > mapping. It also checks if corresponding dax_device is > synchronous. Virtio pmem device is asynchronous and > does not not support VM_SYNC. > > Suggested-by: Jan Kara <jack@suse.cz> > Signed-off-by: Pankaj Gupta <pagupta@redhat.com> The patch looks good to me. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > include/linux/dax.h | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/include/linux/dax.h b/include/linux/dax.h > index c97fc0cc7167..41b4a5db6305 100644 > --- a/include/linux/dax.h > +++ b/include/linux/dax.h > @@ -41,6 +41,18 @@ void kill_dax(struct dax_device *dax_dev); > void dax_write_cache(struct dax_device *dax_dev, bool wc); > bool dax_write_cache_enabled(struct dax_device *dax_dev); > bool dax_synchronous(struct dax_device *dax_dev); > +/* > + * Check if given mapping is supported by the file / underlying device. > + */ > +static inline bool daxdev_mapping_supported(struct vm_area_struct *vma, > + struct dax_device *dax_dev) > +{ > + if (!(vma->vm_flags & VM_SYNC)) > + return true; > + if (!IS_DAX(file_inode(vma->vm_file))) > + return false; > + return dax_synchronous(dax_dev); > +} > #else > static inline struct dax_device *dax_get_by_host(const char *host) > { > @@ -68,6 +80,11 @@ static inline bool dax_write_cache_enabled(struct dax_device *dax_dev) > { > return false; > } > +static inline bool daxdev_mapping_supported(struct vm_area_struct *vma, > + struct dax_device *dax_dev) > +{ > + return !(vma->flags & VM_SYNC); > +} > #endif > > struct writeback_control; > -- > 2.20.1 >
diff --git a/include/linux/dax.h b/include/linux/dax.h index c97fc0cc7167..41b4a5db6305 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -41,6 +41,18 @@ void kill_dax(struct dax_device *dax_dev); void dax_write_cache(struct dax_device *dax_dev, bool wc); bool dax_write_cache_enabled(struct dax_device *dax_dev); bool dax_synchronous(struct dax_device *dax_dev); +/* + * Check if given mapping is supported by the file / underlying device. + */ +static inline bool daxdev_mapping_supported(struct vm_area_struct *vma, + struct dax_device *dax_dev) +{ + if (!(vma->vm_flags & VM_SYNC)) + return true; + if (!IS_DAX(file_inode(vma->vm_file))) + return false; + return dax_synchronous(dax_dev); +} #else static inline struct dax_device *dax_get_by_host(const char *host) { @@ -68,6 +80,11 @@ static inline bool dax_write_cache_enabled(struct dax_device *dax_dev) { return false; } +static inline bool daxdev_mapping_supported(struct vm_area_struct *vma, + struct dax_device *dax_dev) +{ + return !(vma->flags & VM_SYNC); +} #endif struct writeback_control;
This patch introduces 'daxdev_mapping_supported' helper which checks if 'MAP_SYNC' is supported with filesystem mapping. It also checks if corresponding dax_device is synchronous. Virtio pmem device is asynchronous and does not not support VM_SYNC. Suggested-by: Jan Kara <jack@suse.cz> Signed-off-by: Pankaj Gupta <pagupta@redhat.com> --- include/linux/dax.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)