While this looks like a really nice cleanup of the code and removes nasty race conditions I'd like to understand the tradeoffs. This now requires every dax device that is used with a file system to have a struct page backing, which means not only means we'd break existing setups, but also a sharp turn from previous policy. Unless I misremember it was you Intel guys that heavily pushed for the page-less version, so I'd like to understand why you've changed your mind.