Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dax: move DAX-related functions to a new header

In order to handle the !CONFIG_TRANSPARENT_HUGEPAGES case, we need to
return VM_FAULT_FALLBACK from the inlined dax_pmd_fault(), which is
defined in linux/mm.h. Given that we don't want to include <linux/mm.h>
in <linux/fs.h>, the easiest solution is to move the DAX-related
functions to a new header, <linux/dax.h>. We could also have moved
VM_FAULT_* definitions to a new header, or a different header that isn't
quite such a boil-the-ocean header as <linux/mm.h>, but this felt like
the best option.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Cc: Hillf Danton <dhillf@gmail.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Matthew Wilcox and committed by
Linus Torvalds
c94c2acf e1b9996b

+28 -14
+1
fs/block_dev.c
··· 28 28 #include <linux/namei.h> 29 29 #include <linux/log2.h> 30 30 #include <linux/cleancache.h> 31 + #include <linux/dax.h> 31 32 #include <asm/uaccess.h> 32 33 #include "internal.h" 33 34
+1
fs/ext2/file.c
··· 20 20 21 21 #include <linux/time.h> 22 22 #include <linux/pagemap.h> 23 + #include <linux/dax.h> 23 24 #include <linux/quotaops.h> 24 25 #include "ext2.h" 25 26 #include "xattr.h"
+1
fs/ext2/inode.c
··· 25 25 #include <linux/time.h> 26 26 #include <linux/highuid.h> 27 27 #include <linux/pagemap.h> 28 + #include <linux/dax.h> 28 29 #include <linux/quotaops.h> 29 30 #include <linux/writeback.h> 30 31 #include <linux/buffer_head.h>
+1
fs/ext4/file.c
··· 22 22 #include <linux/fs.h> 23 23 #include <linux/mount.h> 24 24 #include <linux/path.h> 25 + #include <linux/dax.h> 25 26 #include <linux/quotaops.h> 26 27 #include <linux/pagevec.h> 27 28 #include <linux/uio.h>
+1
fs/ext4/indirect.c
··· 22 22 23 23 #include "ext4_jbd2.h" 24 24 #include "truncate.h" 25 + #include <linux/dax.h> 25 26 #include <linux/uio.h> 26 27 27 28 #include <trace/events/ext4.h>
+1
fs/ext4/inode.c
··· 22 22 #include <linux/time.h> 23 23 #include <linux/highuid.h> 24 24 #include <linux/pagemap.h> 25 + #include <linux/dax.h> 25 26 #include <linux/quotaops.h> 26 27 #include <linux/string.h> 27 28 #include <linux/buffer_head.h>
+1
fs/xfs/xfs_buf.h
··· 23 23 #include <linux/spinlock.h> 24 24 #include <linux/mm.h> 25 25 #include <linux/fs.h> 26 + #include <linux/dax.h> 26 27 #include <linux/buffer_head.h> 27 28 #include <linux/uio.h> 28 29 #include <linux/list_lru.h>
+21
include/linux/dax.h
··· 1 + #ifndef _LINUX_DAX_H 2 + #define _LINUX_DAX_H 3 + 4 + #include <linux/fs.h> 5 + #include <linux/mm.h> 6 + #include <asm/pgtable.h> 7 + 8 + ssize_t dax_do_io(struct kiocb *, struct inode *, struct iov_iter *, loff_t, 9 + get_block_t, dio_iodone_t, int flags); 10 + int dax_clear_blocks(struct inode *, sector_t block, long size); 11 + int dax_zero_page_range(struct inode *, loff_t from, unsigned len, get_block_t); 12 + int dax_truncate_page(struct inode *, loff_t from, get_block_t); 13 + int dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t, 14 + dax_iodone_t); 15 + int __dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t, 16 + dax_iodone_t); 17 + int dax_pfn_mkwrite(struct vm_area_struct *, struct vm_fault *); 18 + #define dax_mkwrite(vma, vmf, gb, iod) dax_fault(vma, vmf, gb, iod) 19 + #define __dax_mkwrite(vma, vmf, gb, iod) __dax_fault(vma, vmf, gb, iod) 20 + 21 + #endif
-14
include/linux/fs.h
··· 52 52 struct seq_file; 53 53 struct workqueue_struct; 54 54 struct iov_iter; 55 - struct vm_fault; 56 55 57 56 extern void __init inode_init(void); 58 57 extern void __init inode_init_early(void); ··· 2676 2677 int whence, loff_t size); 2677 2678 extern int generic_file_open(struct inode * inode, struct file * filp); 2678 2679 extern int nonseekable_open(struct inode * inode, struct file * filp); 2679 - 2680 - ssize_t dax_do_io(struct kiocb *, struct inode *, struct iov_iter *, loff_t, 2681 - get_block_t, dio_iodone_t, int flags); 2682 - int dax_clear_blocks(struct inode *, sector_t block, long size); 2683 - int dax_zero_page_range(struct inode *, loff_t from, unsigned len, get_block_t); 2684 - int dax_truncate_page(struct inode *, loff_t from, get_block_t); 2685 - int dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t, 2686 - dax_iodone_t); 2687 - int __dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t, 2688 - dax_iodone_t); 2689 - int dax_pfn_mkwrite(struct vm_area_struct *, struct vm_fault *); 2690 - #define dax_mkwrite(vma, vmf, gb, iod) dax_fault(vma, vmf, gb, iod) 2691 - #define __dax_mkwrite(vma, vmf, gb, iod) __dax_fault(vma, vmf, gb, iod) 2692 2680 2693 2681 #ifdef CONFIG_BLOCK 2694 2682 typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode,