• Filipe Manana's avatar
    Btrfs: report error after failure inlining extent in compressed write path · e6eb4314
    Filipe Manana authored
    If cow_file_range_inline() failed, when called from compress_file_range(),
    we were tagging the locked page for writeback, end its writeback and unlock it,
    but not marking it with an error nor setting AS_EIO in inode's mapping flags.
    
    This made it impossible for a caller of filemap_fdatawrite_range (writepages)
    or filemap_fdatawait_range() to know that an error happened. And the return
    value of compress_file_range() is useless because it's returned to a workqueue
    task and not to the task calling filemap_fdatawrite_range (writepages).
    
    This change applies on top of the previous patchset starting at the patch
    titled:
    
        "[1/5] Btrfs: set page and mapping error on compressed write failure"
    
    Which changed extent_clear_unlock_delalloc() to use SetPageError and
    mapping_set_error().
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    e6eb4314
inode.c 251 KB