]>
git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - include/linux/dax.h
6 #include <linux/radix-tree.h>
7 #include <asm/pgtable.h>
9 /* We use lowest available exceptional entry bit for locking */
10 #define RADIX_DAX_ENTRY_LOCK (1 << RADIX_TREE_EXCEPTIONAL_SHIFT)
12 ssize_t
dax_do_io(struct kiocb
*, struct inode
*, struct iov_iter
*,
13 get_block_t
, dio_iodone_t
, int flags
);
14 int dax_zero_page_range(struct inode
*, loff_t from
, unsigned len
, get_block_t
);
15 int dax_truncate_page(struct inode
*, loff_t from
, get_block_t
);
16 int dax_fault(struct vm_area_struct
*, struct vm_fault
*, get_block_t
);
17 int __dax_fault(struct vm_area_struct
*, struct vm_fault
*, get_block_t
);
18 int dax_delete_mapping_entry(struct address_space
*mapping
, pgoff_t index
);
19 void dax_wake_mapping_entry_waiter(struct address_space
*mapping
,
20 pgoff_t index
, bool wake_all
);
23 struct page
*read_dax_sector(struct block_device
*bdev
, sector_t n
);
24 void dax_unlock_mapping_entry(struct address_space
*mapping
, pgoff_t index
);
25 int __dax_zero_page_range(struct block_device
*bdev
, sector_t sector
,
26 unsigned int offset
, unsigned int length
);
28 static inline struct page
*read_dax_sector(struct block_device
*bdev
,
31 return ERR_PTR(-ENXIO
);
33 /* Shouldn't ever be called when dax is disabled. */
34 static inline void dax_unlock_mapping_entry(struct address_space
*mapping
,
39 static inline int __dax_zero_page_range(struct block_device
*bdev
,
40 sector_t sector
, unsigned int offset
, unsigned int length
)
46 #if defined(CONFIG_TRANSPARENT_HUGEPAGE)
47 int dax_pmd_fault(struct vm_area_struct
*, unsigned long addr
, pmd_t
*,
48 unsigned int flags
, get_block_t
);
49 int __dax_pmd_fault(struct vm_area_struct
*, unsigned long addr
, pmd_t
*,
50 unsigned int flags
, get_block_t
);
52 static inline int dax_pmd_fault(struct vm_area_struct
*vma
, unsigned long addr
,
53 pmd_t
*pmd
, unsigned int flags
, get_block_t gb
)
55 return VM_FAULT_FALLBACK
;
57 #define __dax_pmd_fault dax_pmd_fault
59 int dax_pfn_mkwrite(struct vm_area_struct
*, struct vm_fault
*);
60 #define dax_mkwrite(vma, vmf, gb) dax_fault(vma, vmf, gb)
61 #define __dax_mkwrite(vma, vmf, gb) __dax_fault(vma, vmf, gb)
63 static inline bool vma_is_dax(struct vm_area_struct
*vma
)
65 return vma
->vm_file
&& IS_DAX(vma
->vm_file
->f_mapping
->host
);
68 static inline bool dax_mapping(struct address_space
*mapping
)
70 return mapping
->host
&& IS_DAX(mapping
->host
);
73 struct writeback_control
;
74 int dax_writeback_mapping_range(struct address_space
*mapping
,
75 struct block_device
*bdev
, struct writeback_control
*wbc
);