• Christoph Hellwig's avatar
    xfs: support for synchronous DAX faults · a39e596b
    Christoph Hellwig authored
    Return IOMAP_F_DIRTY from xfs_file_iomap_begin() when asked to prepare
    blocks for writing and the inode is pinned, and has dirty fields other
    than the timestamps.  In __xfs_filemap_fault() we then detect this case
    and call dax_finish_sync_fault() to make sure all metadata is committed,
    and to insert the page table entry.
    
    Note that this will also dirty corresponding radix tree entry which is
    what we want - fsync(2) will still provide data integrity guarantees for
    applications not using userspace flushing. And applications using
    userspace flushing can avoid calling fsync(2) and thus avoid the
    performance overhead.
    
    [JK: Added VM_SYNC flag handling]
    Reviewed-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    a39e596b
xfs_iomap.c 33.2 KB