This patch series fixes several issues with the current DAX code: 1) DAX is used by default on raw block devices that are capable of supporting it. This creates an issue because there are still uses of the block device that use the page cache, and having one block device user doing DAX I/O and another doing page cache I/O can lead to data corruption. 2) When S_DAX is set on an inode we assume that if there are pages attached to the mapping (mapping->nrpages != 0), those pages are clean zero pages that were used to service reads from holes. This wasn't true in all cases. 3) ext4 online defrag combined with DAX I/O could lead to data corruption. 4) The DAX block/sector zeroing code needs a valid struct block_device, which it wasn't always getting. 5) The DAX writeback code needs a valid struct block_device, which it wasn't always getting. 6) The DAX writeback code needs to be called for sync(2) and syncfs(2). The last patch in this series reenables the DAX I/O path for raw block devices when they would otherwise be doing direct I/O. It can be dropped if it is too controversial. Thank you to Dan Williams and Jan Kara for their code contributions to this set. A working tree can be found here: https://git.kernel.org/cgit/linux/kernel/git/zwisler/linux.git/log/?h=fsync_bdev_v3 Dan Williams (2): block: disable block device DAX by default block: use dax_do_io() if blkdev_dax_capable() Ross Zwisler (4): ext2, ext4: only set S_DAX for regular inodes ext4: Online defrag not supported with DAX dax: give DAX clearing code correct bdev dax: move writeback calls into the filesystems block/Kconfig | 13 +++++++++++++ block/ioctl.c | 1 + fs/block_dev.c | 22 +++++++++++++++++++--- fs/dax.c | 21 +++++++++++---------- fs/ext2/inode.c | 16 +++++++++++++--- fs/ext4/inode.c | 6 +++++- fs/ext4/ioctl.c | 5 +++++ fs/xfs/xfs_aops.c | 6 +++++- fs/xfs/xfs_aops.h | 1 + fs/xfs/xfs_bmap_util.c | 3 ++- include/linux/dax.h | 8 +++++--- include/linux/fs.h | 31 +++++++++++++++++++++---------- mm/filemap.c | 12 ++++-------- 13 files changed, 105 insertions(+), 40 deletions(-) -- 2.5.0 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>