struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
        blk_status_t ret;
 
-       ret = btrfs_bio_wq_end_io(fs_info, bio,
-                       btrfs_is_free_space_inode(BTRFS_I(inode)) ?
-                       BTRFS_WQ_ENDIO_FREE_SPACE : BTRFS_WQ_ENDIO_DATA);
-       if (ret)
-               goto out;
-
        if (compress_type != BTRFS_COMPRESS_NONE) {
                /*
                 * btrfs_submit_compressed_read will handle completing the bio
                return;
        }
 
+       ret = btrfs_bio_wq_end_io(fs_info, bio,
+                       btrfs_is_free_space_inode(BTRFS_I(inode)) ?
+                       BTRFS_WQ_ENDIO_FREE_SPACE : BTRFS_WQ_ENDIO_DATA);
+       if (ret)
+               goto out;
+
        /*
         * Lookup bio sums does extra checks around whether we need to csum or
         * not, which is why we ignore skip_sum here.