This is the first pass I've made for supporting DAX in XFS. Most
of the XFS changes are straight forward and fairly self contained,
and mostly seem to work.
The first patch, however, is changing the DAX infrastructure to take
a "block zeroing completion" function for dax_fault() so that we
don't need to abuse the mapping bufferhead to pass the completion
function. This is straight forward for XFS, but the ext4 code is,
well, it's already broken so I don't think I've made anything worse.
I note that Jan Kara is aware of the problems related to the
unwritten extent conversion in ext4, as mentioned here earlier
today on the ext4 list (items 1 and 2):
So really my only concern here is cleaning up the interface to
remove the mapping bh hack, not whether ext4 works reliably or not.
The XFS implementation does not have any of the problems the ext4
The rest of the series adds all the DAX hooks into the required code
paths for block zeroing, page fault, io, truncate and finally the
mount path for the dax mount option.
The series passes xfstests without and serious problems - there are
a couple of tests where the extent layout isn't as the tests expect,
but these are minor issues that don't affect correctness.
Comments welcome, especially on the this dax_fault callback patch.