diff options
| author | Dan Williams <[email protected]> | 2016-01-28 20:25:31 -0800 |
|---|---|---|
| committer | Dan Williams <[email protected]> | 2016-01-30 13:35:32 -0800 |
| commit | d1a5f2b4d8a125943dcb6b032fc7eaefc2c78296 (patch) | |
| tree | afdd4251d10cbcf34b00bd4f33adb27996881cc6 /include/linux | |
| parent | 9f4736fe7ca804aa79b5916221bb13dfc6221a0f (diff) | |
block: use DAX for partition table reads
Avoid populating pagecache when the block device is in DAX mode.
Otherwise these page cache entries collide with the fsync/msync
implementation and break data durability guarantees.
Cc: Jan Kara <[email protected]>
Cc: Jeff Moyer <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: Dave Chinner <[email protected]>
Cc: Andrew Morton <[email protected]>
Reported-by: Ross Zwisler <[email protected]>
Tested-by: Ross Zwisler <[email protected]>
Reviewed-by: Matthew Wilcox <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/dax.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/dax.h b/include/linux/dax.h index 8204c3dc3800..818e45078929 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -14,6 +14,17 @@ 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); + +#ifdef CONFIG_FS_DAX +struct page *read_dax_sector(struct block_device *bdev, sector_t n); +#else +static inline struct page *read_dax_sector(struct block_device *bdev, + sector_t n) +{ + return ERR_PTR(-ENXIO); +} +#endif + #ifdef 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); |