On Thu, Mar 28, 2019 at 06:28:25PM +0100, David Sterba wrote: > On Tue, Mar 26, 2019 at 02:02:47PM -0500, Goldwyn Rodrigues wrote: > > From: Goldwyn Rodrigues <rgoldwyn@xxxxxxxx> > > > > This sets S_DAX in inode->i_flags, which can be used with > > IS_DAX(). > > > > The dax option is restricted to non multi-device mounts. > > dax interacts with the device directly instead of using bio, so > > all bio-hooks which we use for multi-device cannot be performed > > here. While regular read/writes could be manipulated with > > RAID0/1, mmap() is still an issue. > > I'm looking for other features that would not work with dax. Disabling > multiple devices strikes out device add, device delete and device > replace. > > To be verified: > > - balance - at least profile changes must be forbidden > > - defrag > > - compression - as it needs COW, it won't work on the nodatacow files, > thus seems to be ok > > - resize/grow - this could work without changes, no block relocation is > needed, only new structures created > > - resize/shrink - depends on balance, the block groups from the removed > area need to be relocated > > - swapfiles - I'm sure somebody will try that; I haven't seen any > IS_DAX checks in the swapfile activation code I've never tried dax swapfiles, but so long as you can issue bios to the underlying bdev they ought to work, right? Even if the swap code could be streamlined by memcpy in the dax case. (Granted I have no idea what sort of bio-hooks magic btrfs does, maybe it really doesn't work there...) --D