On Fri, Mar 2, 2018 at 2:10 PM, Christoph Hellwig <hch@xxxxxx> wrote: > I really don't like these IS_DEVDAX and IS_FSDAX flags. We should > stop pretending DAX is a global per-inode choice and get rid of these > magic flags entirely. So please convert the instances inside the > various file systems to checking the file system mount options instead. > > For the core ones we'll need to differentiate: > > - the checks in generic_file_read_iter and __generic_file_write_iter > seem to not be needed anymore at all since we stopped abusing the > direct I/O code for DAX, so they should probably be removed. > - io_is_direct is a weird check and should probably just go away, > as there is not point in always setting IOCB_DIRECT for DAX I/O > - fadvise should either become a file op, or a flag on the inode that > fadvice is supported instead of the nasty noop_backing_dev_info or > DAX check. > - Ditto for madvise > - vma_is_dax should probably be replaced with a VMA flag. > - thp_get_unmapped_area I don't really understand why we have a dax > check there. > - dax_mapping will be much harder to sort out. > > But all these DAX flags certainly look like a major hodge podge to me. They are indeed a hodge-podge. The problem is that the current IS_DAX() is broken. So I'd like to propose fixing IS_DAX() with IS_FSDAX() + IS_DEVDAX() for 4.16-rc4 and queue up these wider reworks you propose for the next merge window. Acceptable?