On Tue, Apr 12, 2016 at 02:39:29PM -0600, Toshi Kani wrote:
> To support DAX pmd mappings with unmodified applications,
> filesystems need to align an mmap address by the pmd size.

> @@ -708,6 +708,9 @@ const struct file_operations ext4_file_operations = {
>       .open           = ext4_file_open,
>       .release        = ext4_release_file,
>       .fsync          = ext4_sync_file,
> +#ifdef CONFIG_FS_DAX
> +     .get_unmapped_area = dax_get_unmapped_area,
> +#endif
>       .splice_read    = generic_file_splice_read,
>       .splice_write   = iter_file_splice_write,
>       .fallocate      = ext4_fallocate,

Could you do something like:

 #ifdef CONFIG_FS_DAX
 struct page *read_dax_sector(struct block_device *bdev, sector_t n);
+unsigned long dax_get_unmapped_area(struct file *filp, unsigned long addr,
+               unsigned long len, unsigned long pgoff, unsigned long flags);
 #else
 static inline struct page *read_dax_sector(struct block_device *bdev,
                 sector_t n)
 {
         return ERR_PTR(-ENXIO);
 }
+#define dax_get_unmapped_area  NULL
 #endif

in patch 1/5.  Then there's no need for the ifdefs in each filesystem.

Reply via email to