On Fri, Mar 2, 2018 at 2:10 PM, Christoph Hellwig hch@lst.de 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?