When truncating DAX entry, we need to clear all the outstanding marks for the entry. Use dax_erase() instead of dax_store(). Signed-off-by: Jan Kara <jack@xxxxxxx> --- fs/dax.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/dax.c b/fs/dax.c index 11b16729b86f..f8358928549c 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -643,7 +643,7 @@ static int __dax_invalidate_entry(struct address_space *mapping, xas_get_mark(&xas, PAGECACHE_TAG_TOWRITE))) goto out; dax_disassociate_entry(entry, mapping, trunc); - xas_store(&xas, NULL); + xas_erase(&xas); mapping->nrexceptional--; ret = 1; out: -- 2.16.4