mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
dax: remove the copy_from_iter and copy_to_iter methods
These methods indirect the actual DAX read/write path. In the end pmem uses magic flush and mc safe variants and fuse and dcssblk use plain ones while device mapper picks redirects to the underlying device. Add set_dax_nocache() and set_dax_nomc() APIs to control which copy routines are used to remove indirect call from the read/write fast path as well as a lot of boilerplate code. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Vivek Goyal <vgoyal@redhat.com> [virtiofs] Link: https://lore.kernel.org/r/20211215084508.435401-5-hch@lst.de Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
30c6828a17
commit
7ac5360cd4
12 changed files with 41 additions and 237 deletions
|
@ -28,12 +28,6 @@ struct dax_operations {
|
|||
*/
|
||||
bool (*dax_supported)(struct dax_device *, struct block_device *, int,
|
||||
sector_t, sector_t);
|
||||
/* copy_from_iter: required operation for fs-dax direct-i/o */
|
||||
size_t (*copy_from_iter)(struct dax_device *, pgoff_t, void *, size_t,
|
||||
struct iov_iter *);
|
||||
/* copy_to_iter: required operation for fs-dax direct-i/o */
|
||||
size_t (*copy_to_iter)(struct dax_device *, pgoff_t, void *, size_t,
|
||||
struct iov_iter *);
|
||||
/* zero_page_range: required operation. Zero page range */
|
||||
int (*zero_page_range)(struct dax_device *, pgoff_t, size_t);
|
||||
};
|
||||
|
@ -95,6 +89,9 @@ static inline bool daxdev_mapping_supported(struct vm_area_struct *vma,
|
|||
}
|
||||
#endif
|
||||
|
||||
void set_dax_nocache(struct dax_device *dax_dev);
|
||||
void set_dax_nomc(struct dax_device *dax_dev);
|
||||
|
||||
struct writeback_control;
|
||||
#if defined(CONFIG_BLOCK) && defined(CONFIG_FS_DAX)
|
||||
int dax_add_host(struct dax_device *dax_dev, struct gendisk *disk);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue