• Filipe Manana's avatar
    Btrfs: set inode's logged_trans/last_log_commit after ranged fsync · 125c4cf9
    Filipe Manana authored
    When a ranged fsync finishes if there are still extent maps in the modified
    list, still set the inode's logged_trans and last_log_commit. This is important
    in case an inode is fsync'ed and unlinked in the same transaction, to ensure its
    inode ref gets deleted from the log and the respective dentries in its parent
    are deleted too from the log (if the parent directory was fsync'ed in the same
    transaction).
    
    Instead make btrfs_inode_in_log() return false if the list of modified extent
    maps isn't empty.
    
    This is an incremental on top of the v4 version of the patch:
    
        "Btrfs: fix fsync data loss after a ranged fsync"
    
    which was added to its v5, but didn't make it on time.
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    125c4cf9
btrfs_inode.h 7.64 KB