From: Christoph Hellwig [mailto:h...@infradead.org] > Either way we need to get rid of buffer_heads, and another aop that is > entirely > caller specific is unaceptable.
I finally figured out what you actually meant by this. You mean that instead of having an aop->populate_pfn, you want to define a populate_pfn_t callback and pass it in. Something like this: int ext2_populate_pfn(struct address_space *mapping, pgoff_t pgoff) { struct iomap iomap; ... return dax_populate_pfn(mapping, pgoff, &iomap); } int ext2_dax_fault(vma, vmf) { ... ret = dax_fault(vma, vmf, ext2_populate_pfn); ... } I don't have a problem with that. I'll work up something along those lines next week.