]> git.kernelconcepts.de Git - karo-tx-linux.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)
commitc6dcf52c23d2d3fb5235cec42d7dd3f786b87d55
tree7e63a6c0225a769e679b194f54b5723e4cfba385
parente568df6b84ff05a22467503afc11bee7a6ba0700
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