diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/iov_iter.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 94fa361be7bb..09fb73ad9d54 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c | |||
@@ -727,6 +727,20 @@ size_t _copy_from_iter_nocache(void *addr, size_t bytes, struct iov_iter *i) | |||
727 | EXPORT_SYMBOL(_copy_from_iter_nocache); | 727 | EXPORT_SYMBOL(_copy_from_iter_nocache); |
728 | 728 | ||
729 | #ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE | 729 | #ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE |
730 | /** | ||
731 | * _copy_from_iter_flushcache - write destination through cpu cache | ||
732 | * @addr: destination kernel address | ||
733 | * @bytes: total transfer length | ||
734 | * @iter: source iterator | ||
735 | * | ||
736 | * The pmem driver arranges for filesystem-dax to use this facility via | ||
737 | * dax_copy_from_iter() for ensuring that writes to persistent memory | ||
738 | * are flushed through the CPU cache. It is differentiated from | ||
739 | * _copy_from_iter_nocache() in that guarantees all data is flushed for | ||
740 | * all iterator types. The _copy_from_iter_nocache() only attempts to | ||
741 | * bypass the cache for the ITER_IOVEC case, and on some archs may use | ||
742 | * instructions that strand dirty-data in the cache. | ||
743 | */ | ||
730 | size_t _copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i) | 744 | size_t _copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i) |
731 | { | 745 | { |
732 | char *to = addr; | 746 | char *to = addr; |