On Sat, Sep 10, 2016 at 1:15 AM, Matthew Wilcox <mawilcox(a)microsoft.com> wrote:
From: Dan Williams [mailto:email@example.com]
> /me grumbles about top-posting...
Let's see if this does any better .. there's lots of new features, but I
don't see a 'wrap lines at 80 columns' option. Unfortunately.
> So the current dax implementation is still struggling to get
right (pmd faulting,
> dirty entry cleaning, etc) and this seems like a rewrite that sets us up for future
> features without addressing the current bugs and todo items. In comparison
> the iomap conversion work seems incremental and conserving of current
> development momentum.
I believe your assessment is incorrect. If converting the current DAX code to
use iomap forces converting ext2, then it's time to get rid of all the half-measures
currently in place. You left off one todo item that this does get us a step closer to
fixing -- support for DMA to mmaped DAX files.
I didn't leave that off, DMA is solved with devm_memremap_pages().
Now, DMA without the ~1.6% capacity tax for the memmap array is
interesting, but that's a new feature.
I think it also puts us in a better
position to fix the 2MB support, locking, and dirtiness tracking. Oh, and it does
fix the multivolume support (because the sectors in the radix tree could be
interpreted as being from the wrong volume).
> I agree with you that continuing to touch ext2 is not a good idea, but I'm not
> yet convinced that now is the time to go do dax-2.0 when we haven't finished
> shipping dax-1.0.
dax-1.0 died long ago ... I think we're up to at least DAX version 4 by now.
My point is that I want to address the current slate of problems
before solving new questions like "how do we support non-block based
filesystems?". We just happened to land DAX in the middle of the
in-progress buffer_head removal effort, so DAX should not stand in the
way of where filesystems were already going. I'm arguing to complete
all the false starts and half measures that are presently in DAX and
then look to incrementally evolve the interfaces to something new
without regressing any of it.