diff options
Diffstat (limited to 'include/linux/dax.h')
| -rw-r--r-- | include/linux/dax.h | 41 | 
1 files changed, 29 insertions, 12 deletions
| diff --git a/include/linux/dax.h b/include/linux/dax.h index 982a6c4a62f3..43d5f0b799c7 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -3,45 +3,62 @@  #include <linux/fs.h>  #include <linux/mm.h> +#include <linux/radix-tree.h>  #include <asm/pgtable.h> +/* We use lowest available exceptional entry bit for locking */ +#define RADIX_DAX_ENTRY_LOCK (1 << RADIX_TREE_EXCEPTIONAL_SHIFT) +  ssize_t dax_do_io(struct kiocb *, struct inode *, struct iov_iter *,  		  get_block_t, dio_iodone_t, int flags); -int dax_clear_sectors(struct block_device *bdev, sector_t _sector, long _size);  int dax_zero_page_range(struct inode *, loff_t from, unsigned len, get_block_t);  int dax_truncate_page(struct inode *, loff_t from, get_block_t); -int dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t, -		dax_iodone_t); -int __dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t, -		dax_iodone_t); +int dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t); +int __dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t); +int dax_delete_mapping_entry(struct address_space *mapping, pgoff_t index); +void dax_wake_mapping_entry_waiter(struct address_space *mapping, +				   pgoff_t index, bool wake_all);  #ifdef CONFIG_FS_DAX  struct page *read_dax_sector(struct block_device *bdev, sector_t n); +void dax_unlock_mapping_entry(struct address_space *mapping, pgoff_t index); +int __dax_zero_page_range(struct block_device *bdev, sector_t sector, +		unsigned int offset, unsigned int length);  #else  static inline struct page *read_dax_sector(struct block_device *bdev,  		sector_t n)  {  	return ERR_PTR(-ENXIO);  } +/* Shouldn't ever be called when dax is disabled. */ +static inline void dax_unlock_mapping_entry(struct address_space *mapping, +					    pgoff_t index) +{ +	BUG(); +} +static inline int __dax_zero_page_range(struct block_device *bdev, +		sector_t sector, unsigned int offset, unsigned int length) +{ +	return -ENXIO; +}  #endif -#ifdef CONFIG_TRANSPARENT_HUGEPAGE +#if defined(CONFIG_TRANSPARENT_HUGEPAGE)  int dax_pmd_fault(struct vm_area_struct *, unsigned long addr, pmd_t *, -				unsigned int flags, get_block_t, dax_iodone_t); +				unsigned int flags, get_block_t);  int __dax_pmd_fault(struct vm_area_struct *, unsigned long addr, pmd_t *, -				unsigned int flags, get_block_t, dax_iodone_t); +				unsigned int flags, get_block_t);  #else  static inline int dax_pmd_fault(struct vm_area_struct *vma, unsigned long addr, -				pmd_t *pmd, unsigned int flags, get_block_t gb, -				dax_iodone_t di) +				pmd_t *pmd, unsigned int flags, get_block_t gb)  {  	return VM_FAULT_FALLBACK;  }  #define __dax_pmd_fault dax_pmd_fault  #endif  int dax_pfn_mkwrite(struct vm_area_struct *, struct vm_fault *); -#define dax_mkwrite(vma, vmf, gb, iod)		dax_fault(vma, vmf, gb, iod) -#define __dax_mkwrite(vma, vmf, gb, iod)	__dax_fault(vma, vmf, gb, iod) +#define dax_mkwrite(vma, vmf, gb)	dax_fault(vma, vmf, gb) +#define __dax_mkwrite(vma, vmf, gb)	__dax_fault(vma, vmf, gb)  static inline bool vma_is_dax(struct vm_area_struct *vma)  { |