We actually use nrexceptional for very little these days. It's a constant source of pain with the THP patches because we don't know how large a shadow entry is, so either we have to ask the xarray how many indices it covers, or store that information in the shadow entry (and reduce the amount of other information in the shadow entry proportionally). While tracking down the most recent case of "evict tells me I've got the accounting wrong again", I wondered if it might not be simpler to just remove it. So here's a patch set to do just that. I think each of these patches is an improvement in isolation, but the combination of all four is larger than the sum of its parts. I'm running xfstests on this patchset right now. If one of the DAX people could try it out, that'd be fantastic. Matthew Wilcox (Oracle) (4): mm: Introduce and use page_cache_empty mm: Stop accounting shadow entries dax: Account DAX entries as nrpages mm: Remove nrexceptional from inode fs/block_dev.c | 2 +- fs/dax.c | 8 ++++---- fs/inode.c | 2 +- include/linux/fs.h | 2 -- include/linux/pagemap.h | 5 +++++ mm/filemap.c | 15 --------------- mm/truncate.c | 19 +++---------------- mm/workingset.c | 1 - 8 files changed, 14 insertions(+), 40 deletions(-) -- 2.27.0