u32 sums;
 };
 
-static int btrfs_decompress_bio(int type, struct page **pages_in,
-                                  u64 disk_start, struct bio *orig_bio,
-                                  size_t srclen);
+static int btrfs_decompress_bio(struct compressed_bio *cb);
 
 static inline int compressed_bio_size(struct btrfs_fs_info *fs_info,
                                      unsigned long disk_size)
        /* ok, we're the last bio for this extent, lets start
         * the decompression.
         */
-       ret = btrfs_decompress_bio(cb->compress_type,
-                                     cb->compressed_pages,
-                                     cb->start,
-                                     cb->orig_bio,
-                                     cb->compressed_len);
+       ret = btrfs_decompress_bio(cb);
+
 csum_failed:
        if (ret)
                cb->errors = 1;
  * be contiguous.  They all correspond to the range of bytes covered by
  * the compressed extent.
  */
-static int btrfs_decompress_bio(int type, struct page **pages_in,
-                                  u64 disk_start, struct bio *orig_bio,
-                                  size_t srclen)
+static int btrfs_decompress_bio(struct compressed_bio *cb)
 {
        struct list_head *workspace;
        int ret;
+       int type = cb->compress_type;
 
        workspace = find_workspace(type);
 
-       ret = btrfs_compress_op[type-1]->decompress_bio(workspace, pages_in,
-                                                        disk_start, orig_bio,
-                                                        srclen);
+       ret = btrfs_compress_op[type - 1]->decompress_bio(workspace,
+                       cb->compressed_pages, cb->start, cb->orig_bio,
+                       cb->compressed_len);
+
        free_workspace(type, workspace);
        return ret;
 }