Lines Matching full:cb
90 struct compressed_bio *cb)
92 switch (cb->compress_type) {
93 case BTRFS_COMPRESS_ZLIB: return zlib_decompress_bio(ws, cb);
94 case BTRFS_COMPRESS_LZO: return lzo_decompress_bio(ws, cb);
95 case BTRFS_COMPRESS_ZSTD: return zstd_decompress_bio(ws, cb);
127 static int btrfs_decompress_bio(struct compressed_bio *cb);
233 struct compressed_bio *cb = to_compressed_bio(bbio);
238 status = errno_to_blk_status(btrfs_decompress_bio(cb));
240 btrfs_bio_end_io(cb->orig_bbio, status);
250 static noinline void end_compressed_writeback(const struct compressed_bio *cb)
252 struct inode *inode = &cb->bbio.inode->vfs_inode;
254 pgoff_t index = cb->start >> PAGE_SHIFT;
255 const pgoff_t end_index = (cb->start + cb->len - 1) >> PAGE_SHIFT;
260 ret = blk_status_to_errno(cb->bbio.bio.bi_status);
276 cb->start, cb->len);
292 struct compressed_bio *cb = to_compressed_bio(bbio);
295 btrfs_finish_ordered_extent(cb->bbio.ordered, cb->start, cb->len,
296 cb->bbio.bio.bi_status == BLK_STS_OK);
298 if (cb->writeback)
299 end_compressed_writeback(cb);
303 bio_put(&cb->bbio.bio);
316 struct compressed_bio *cb)
328 ASSERT(!cb->writeback);
330 cb->start = ordered->file_offset;
331 cb->len = ordered->num_bytes;
332 ASSERT(cb->bbio.bio.bi_iter.bi_size == ordered->disk_num_bytes);
333 cb->bbio.bio.bi_iter.bi_sector = ordered->disk_bytenr >> SECTOR_SHIFT;
334 cb->bbio.ordered = ordered;
336 btrfs_submit_bbio(&cb->bbio, 0);
348 struct compressed_bio *cb;
350 cb = alloc_compressed_bio(inode, start, REQ_OP_WRITE, end_bbio_compressed_write);
351 cb->start = start;
352 cb->len = len;
353 cb->writeback = false;
354 return cb;
370 struct compressed_bio *cb,
376 struct bio *orig_bio = &cb->orig_bbio->bio;
377 u64 cur = cb->orig_bbio->file_offset + orig_bio->bi_iter.bi_size;
546 struct compressed_bio *cb;
581 cb = alloc_compressed_bio(inode, file_offset, REQ_OP_READ,
584 cb->start = em->start - em->offset;
588 cb->len = bbio->bio.bi_iter.bi_size;
589 cb->compress_type = btrfs_extent_map_compression(em);
590 cb->orig_bbio = bbio;
591 cb->bbio.csum_search_commit_root = bbio->csum_search_commit_root;
605 ret = bio_add_folio(&cb->bbio.bio, folio, cur_len, 0);
612 ASSERT(cb->bbio.bio.bi_iter.bi_size == compressed_len);
614 add_ra_bio_pages(&inode->vfs_inode, em_start + em_len, cb, &memstall,
617 cb->len = bbio->bio.bi_iter.bi_size;
618 cb->bbio.bio.bi_iter.bi_sector = bbio->bio.bi_iter.bi_sector;
623 btrfs_submit_bbio(&cb->bbio, 0);
627 cleanup_compressed_bio(cb);
1017 * contents into @cb.
1024 * @cb->bbio.bio.bi_iter.bi_size will indicate the compressed data size.
1039 struct compressed_bio *cb;
1042 cb = alloc_compressed_bio(inode, start, REQ_OP_WRITE | write_flags,
1044 cb->start = start;
1045 cb->len = len;
1046 cb->writeback = true;
1047 cb->compress_type = type;
1053 ret = zlib_compress_bio(workspace, cb);
1056 ret = lzo_compress_bio(workspace, cb);
1059 ret = zstd_compress_bio(workspace, cb);
1077 cleanup_compressed_bio(cb);
1080 return cb;
1083 static int btrfs_decompress_bio(struct compressed_bio *cb)
1085 struct btrfs_fs_info *fs_info = cb_to_fs_info(cb);
1088 int type = cb->compress_type;
1091 ret = compression_decompress_bio(workspace, cb);
1095 zero_fill_bio(&cb->orig_bbio->bio);
1215 * @cb: The compressed extent descriptor
1222 * |<----------- @cb range ---->|
1226 * Note that, @cb can be a subpage of the full decompressed extent, but
1227 * @cb->start always has the same as the orig_file_offset value of the full
1239 struct compressed_bio *cb, u32 decompressed)
1241 struct bio *orig_bio = &cb->orig_bbio->bio;
1257 * cb->start may underflow, but subtracting that value can still
1260 bvec_offset = file_offset_from_bvec(&bvec) - cb->start;