]> git.baikalelectronics.ru Git - kernel.git/commit
mm: Invalidate DAX radix tree entries only if appropriate
authorJan Kara <jack@suse.cz>
Wed, 10 Aug 2016 15:22:44 +0000 (17:22 +0200)
committerDan Williams <dan.j.williams@intel.com>
Tue, 27 Dec 2016 04:29:24 +0000 (20:29 -0800)
commit3e2119ae44ae0eb4e7bd336f58cf0451dfc814fe
tree7e63a6c0225a769e679b194f54b5723e4cfba385
parentd6b6dfd52c810af7f215b97e9054dc8c82aa67d2
mm: Invalidate DAX radix tree entries only if appropriate

Currently invalidate_inode_pages2_range() and invalidate_mapping_pages()
just delete all exceptional radix tree entries they find. For DAX this
is not desirable as we track cache dirtiness in these entries and when
they are evicted, we may not flush caches although it is necessary. This
can for example manifest when we write to the same block both via mmap
and via write(2) (to different offsets) and fsync(2) then does not
properly flush CPU caches when modification via write(2) was the last
one.

Create appropriate DAX functions to handle invalidation of DAX entries
for invalidate_inode_pages2_range() and invalidate_mapping_pages() and
wire them up into the corresponding mm functions.

Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
fs/dax.c
include/linux/dax.h
mm/truncate.c