Lines Matching refs:cb

122 				      struct compressed_bio *cb)  in compression_decompress_bio()  argument
124 switch (cb->compress_type) { in compression_decompress_bio()
125 case BTRFS_COMPRESS_ZLIB: return zlib_decompress_bio(ws, cb); in compression_decompress_bio()
126 case BTRFS_COMPRESS_LZO: return lzo_decompress_bio(ws, cb); in compression_decompress_bio()
127 case BTRFS_COMPRESS_ZSTD: return zstd_decompress_bio(ws, cb); in compression_decompress_bio()
159 static void btrfs_free_compressed_folios(struct compressed_bio *cb) in btrfs_free_compressed_folios() argument
161 for (unsigned int i = 0; i < cb->nr_folios; i++) in btrfs_free_compressed_folios()
162 btrfs_free_compr_folio(cb->compressed_folios[i]); in btrfs_free_compressed_folios()
163 kfree(cb->compressed_folios); in btrfs_free_compressed_folios()
166 static int btrfs_decompress_bio(struct compressed_bio *cb);
272 struct compressed_bio *cb = to_compressed_bio(bbio); in end_bbio_compressed_read() local
276 status = errno_to_blk_status(btrfs_decompress_bio(cb)); in end_bbio_compressed_read()
278 btrfs_free_compressed_folios(cb); in end_bbio_compressed_read()
279 btrfs_bio_end_io(cb->orig_bbio, status); in end_bbio_compressed_read()
287 static noinline void end_compressed_writeback(const struct compressed_bio *cb) in end_compressed_writeback() argument
289 struct inode *inode = &cb->bbio.inode->vfs_inode; in end_compressed_writeback()
291 pgoff_t index = cb->start >> PAGE_SHIFT; in end_compressed_writeback()
292 const pgoff_t end_index = (cb->start + cb->len - 1) >> PAGE_SHIFT; in end_compressed_writeback()
297 ret = blk_status_to_errno(cb->bbio.bio.bi_status); in end_compressed_writeback()
313 cb->start, cb->len); in end_compressed_writeback()
329 struct compressed_bio *cb = to_compressed_bio(bbio); in end_bbio_compressed_write() local
331 btrfs_finish_ordered_extent(cb->bbio.ordered, NULL, cb->start, cb->len, in end_bbio_compressed_write()
332 cb->bbio.bio.bi_status == BLK_STS_OK); in end_bbio_compressed_write()
334 if (cb->writeback) in end_bbio_compressed_write()
335 end_compressed_writeback(cb); in end_bbio_compressed_write()
337 btrfs_free_compressed_folios(cb); in end_bbio_compressed_write()
338 bio_put(&cb->bbio.bio); in end_bbio_compressed_write()
341 static void btrfs_add_compressed_bio_folios(struct compressed_bio *cb) in btrfs_add_compressed_bio_folios() argument
343 struct bio *bio = &cb->bbio.bio; in btrfs_add_compressed_bio_folios()
347 while (offset < cb->compressed_len) { in btrfs_add_compressed_bio_folios()
348 struct folio *folio = cb->compressed_folios[findex]; in btrfs_add_compressed_bio_folios()
349 u32 len = min_t(u32, cb->compressed_len - offset, folio_size(folio)); in btrfs_add_compressed_bio_folios()
377 struct compressed_bio *cb; in btrfs_submit_compressed_write() local
382 cb = alloc_compressed_bio(inode, ordered->file_offset, in btrfs_submit_compressed_write()
385 cb->start = ordered->file_offset; in btrfs_submit_compressed_write()
386 cb->len = ordered->num_bytes; in btrfs_submit_compressed_write()
387 cb->compressed_folios = compressed_folios; in btrfs_submit_compressed_write()
388 cb->compressed_len = ordered->disk_num_bytes; in btrfs_submit_compressed_write()
389 cb->writeback = writeback; in btrfs_submit_compressed_write()
390 cb->nr_folios = nr_folios; in btrfs_submit_compressed_write()
391 cb->bbio.bio.bi_iter.bi_sector = ordered->disk_bytenr >> SECTOR_SHIFT; in btrfs_submit_compressed_write()
392 cb->bbio.ordered = ordered; in btrfs_submit_compressed_write()
393 btrfs_add_compressed_bio_folios(cb); in btrfs_submit_compressed_write()
395 btrfs_submit_bbio(&cb->bbio, 0); in btrfs_submit_compressed_write()
411 struct compressed_bio *cb, in add_ra_bio_pages() argument
416 struct bio *orig_bio = &cb->orig_bbio->bio; in add_ra_bio_pages()
417 u64 cur = cb->orig_bbio->file_offset + orig_bio->bi_iter.bi_size; in add_ra_bio_pages()
572 struct compressed_bio *cb; in btrfs_submit_compressed_read() local
595 cb = alloc_compressed_bio(inode, file_offset, REQ_OP_READ, in btrfs_submit_compressed_read()
598 cb->start = em->start - em->offset; in btrfs_submit_compressed_read()
602 cb->len = bbio->bio.bi_iter.bi_size; in btrfs_submit_compressed_read()
603 cb->compressed_len = compressed_len; in btrfs_submit_compressed_read()
604 cb->compress_type = btrfs_extent_map_compression(em); in btrfs_submit_compressed_read()
605 cb->orig_bbio = bbio; in btrfs_submit_compressed_read()
606 cb->bbio.csum_search_commit_root = bbio->csum_search_commit_root; in btrfs_submit_compressed_read()
610 cb->nr_folios = DIV_ROUND_UP(compressed_len, btrfs_min_folio_size(fs_info)); in btrfs_submit_compressed_read()
611 cb->compressed_folios = kcalloc(cb->nr_folios, sizeof(struct folio *), GFP_NOFS); in btrfs_submit_compressed_read()
612 if (!cb->compressed_folios) { in btrfs_submit_compressed_read()
617 ret = btrfs_alloc_folio_array(cb->nr_folios, fs_info->block_min_order, in btrfs_submit_compressed_read()
618 cb->compressed_folios); in btrfs_submit_compressed_read()
624 add_ra_bio_pages(&inode->vfs_inode, em_start + em_len, cb, &memstall, in btrfs_submit_compressed_read()
628 cb->len = bbio->bio.bi_iter.bi_size; in btrfs_submit_compressed_read()
629 cb->bbio.bio.bi_iter.bi_sector = bbio->bio.bi_iter.bi_sector; in btrfs_submit_compressed_read()
630 btrfs_add_compressed_bio_folios(cb); in btrfs_submit_compressed_read()
635 btrfs_submit_bbio(&cb->bbio, 0); in btrfs_submit_compressed_read()
639 kfree(cb->compressed_folios); in btrfs_submit_compressed_read()
641 bio_put(&cb->bbio.bio); in btrfs_submit_compressed_read()
1068 static int btrfs_decompress_bio(struct compressed_bio *cb) in btrfs_decompress_bio() argument
1070 struct btrfs_fs_info *fs_info = cb_to_fs_info(cb); in btrfs_decompress_bio()
1073 int type = cb->compress_type; in btrfs_decompress_bio()
1076 ret = compression_decompress_bio(workspace, cb); in btrfs_decompress_bio()
1080 zero_fill_bio(&cb->orig_bbio->bio); in btrfs_decompress_bio()
1224 struct compressed_bio *cb, u32 decompressed) in btrfs_decompress_buf2page() argument
1226 struct bio *orig_bio = &cb->orig_bbio->bio; in btrfs_decompress_buf2page()
1245 bvec_offset = file_offset_from_bvec(&bvec) - cb->start; in btrfs_decompress_buf2page()