On 13:02 10/03, Matthew Wilcox wrote:
On Wed, Mar 10, 2021 at 07:30:41AM -0500, Neal Gompa wrote:
> Forgive my ignorance, but is there a reason why this isn't wired up to
> Btrfs at the same time? It seems weird to me that adding a feature
btrfs doesn't support DAX. only ext2, ext4, XFS and FUSE have DAX support.
If you think about it, btrfs and DAX are diametrically opposite things.
DAX is about giving raw access to the hardware. btrfs is about offering
extra value (RAID, checksums, ...), none of which can be done if the
filesystem isn't in the read/write path.
That's why there's no DAX support in btrfs. If you want DAX, you have
to give up all the features you like in btrfs. So you may as well use
a different filesystem.
DAX on btrfs has been attempted. Of course, we could not
have checksums or multi-device with it. However, got stuck on
associating a shared extent on the same page mapping: basically the
TODO above dax_associate_entry().
Shiyang has proposed a way to disassociate existing mapping, but I
don't think that is the best solution. DAX for CoW will not work until
we have a way of mapping a page to multiple inodes (page->mapping),
which will convert a 1-N inode-page mapping to M-N inode-page mapping.