• Johannes Thumshirn's avatar
    btrfs: handle errors from async submission · c965d640
    Johannes Thumshirn authored
    Btrfs' async submit mechanism is able to handle errors in the submission
    path and the meta-data async submit function correctly passes the error
    code to the caller.
    
    In btrfs_submit_bio_start() and btrfs_submit_bio_start_direct_io() we're
    not handling the errors returned by btrfs_csum_one_bio() correctly though
    and simply call BUG_ON(). This is unnecessary as the caller of these two
    functions - run_one_async_start - correctly checks for the return values
    and sets the status of the async_submit_bio. The actual bio submission
    will be handled later on by run_one_async_done only if
    async_submit_bio::status is 0, so the data won't be written if we
    encountered an error in the checksum process.
    
    Simply return the error from btrfs_csum_one_bio() to the async submitters,
    like it's done in btree_submit_bio_start().
    Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Signed-off-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    c965d640
inode.c 287 KB