diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index c7309e8bcc53..9648fbd20137 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -530,14 +530,14 @@ static void end_bbio_data_write(struct btrfs_bio *bbio) u32 len = fi.length; bio_size += len; - if (error) - mapping_set_error(folio->mapping, error); - ASSERT(btrfs_folio_test_ordered(fs_info, folio, start, len)); btrfs_folio_clear_ordered(fs_info, folio, start, len); btrfs_folio_clear_writeback(fs_info, folio, start, len); } + if (error) + mapping_set_error(bbio->inode->vfs_inode.i_mapping, error); + btrfs_finish_ordered_extent(bbio->ordered, bbio->file_offset, bio_size, !error); bio_put(bio); }